library(openxlsx) #Permite la lectura de archivos tipo "xlsx"
library(stargazer)#Para mejor apariencia de tablas
library(sandwich)#Para matriz de varianzas y covarianzas robusta
library(lmtest)#Para pruebas de heterocedasticidad y autocorrelación
library(glmulti)#Para selección de variables
library(moments)#Para pruebas de normalidad de los residuos
library(skedastic)#Para pruebas de heterocedasticidad
library(AER)#Pruebas sobre endogeneidad y estimación IV
library(truncreg)#Para regresión truncada
library(car)#Para condición de multicolinealidad
library(strucchange)#Para prueba estabilidad
library(dplyr) #Para manejo de datos
library(MASS) # regresión robusta

1 Introducción

El presente documento permite replicar las estimaciones en el documento “Fijación ordinaria de comisiones máximas del sistema de tarjetas de pago 2022”. Se consideran los siguientes modelos:

  • Regresión lineal múltiple.
  • Regresión con variable dependiente truncada (en 0% y en el valor internacional más bajo registrado).
  • Regresión lineal múltiple con una transformación logarítmica a la variable dependiente.
  • Inclusión de efectos no lineales en la regresión.
  • Regresión lineal múltiple omitiendo los datos pertenecientes al Espacio Económico Europeo (EEE).
  • Regresión lineal múltiple restringiendo la muestra únicamente a países que regulan las tasas de intercambio/adquirencia.
  • Regresión robusta.
  • Método Bootstrap.
  • Modelo sin variables relacionadas al uso de tarjetas.
  • Método de variables instrumentales.

La descripción de los datos utilizados es la siguiente:

#datos<-read.xlsx("Base_datos_adquirencia_intercambio.xlsx", sheet =  1, colNames = TRUE)
attach(datos)

#Se describen los datos
#str(datos)
#summary(datos)
#Selección de variables a utilizar
misc<-dplyr::select(datos, c("Codigo_Pais","OCDE","Regulacion_intercambio","Regulacion_adquirencia"))
misc<-misc[order(misc$Regulacion_intercambio, decreasing = TRUE),] # ordenando por regulacion intercambio
misc<-misc[!duplicated(misc[,1]),]
#Se elimina Costa Rica
misc<-misc[misc$Codigo_Pais!="CRI",]

#Tabla OCDE de frecuencias
tabla_ocde<-as.data.frame(cbind( c(0,1, "Total"), 
                                 c(sum(misc$OCDE==0), sum(misc$OCDE==1), nrow(misc)),
                                 round(c(100*sum(misc$OCDE==0)/nrow(misc),
                                         100*sum(misc$OCDE==1)/nrow(misc),
                                         100*sum(misc$OCDE==0)/nrow(misc)+
                                         100*sum(misc$OCDE==1)/nrow(misc)),1),
                                 c(round(100*sum(misc$OCDE==0)/nrow(misc),1),
                                   round(100*sum(misc$OCDE==0)/nrow(misc)+
                                           100*sum(misc$OCDE==1)/nrow(misc),1), "") 
                                 ) 
                          )

names(tabla_ocde)<-c("País pertenece a la OCDE", "Frecuencia", "Porcentaje", "Acumulado")

#Tabla intercambio
tabla_int<-as.data.frame(cbind( c(0,1, "Total"),
                                c(sum(misc$Regulacion_intercambio==0),
                                  sum(misc$Regulacion_intercambio==1),
                                  nrow(misc)), 
                                round(c(
                                  100*sum(misc$Regulacion_intercambio==0)/nrow(misc),
                                  100*sum(misc$Regulacion_intercambio==1)/nrow(misc),
                                  100*sum(misc$Regulacion_intercambio==0)/nrow(misc) +
                                  100*sum(misc$Regulacion_intercambio==1)/nrow(misc)),1),
                                  c(round(100*sum(misc$Regulacion_intercambio==0)/nrow(misc),1),
                                        round(100*sum(misc$Regulacion_intercambio==0)/nrow(misc) +
                                        100*sum(misc$Regulacion_intercambio==1)/nrow(misc),1), "")
                                )
                         )

names(tabla_int)<-c("Regulación en intercambio", "Frecuencia", "Porcentaje", "Acumulado")

#Tabla adquirencia
tabla_adq<-as.data.frame(cbind( c(0,1, "Total"), 
                                c(sum(misc$Regulacion_adquirencia==0), 
                                  sum(misc$Regulacion_adquirencia==1), 
                                  nrow(misc)), 
                                round(c(
                                  100*sum(misc$Regulacion_adquirencia==0)/nrow(misc),
                                  100*sum(misc$Regulacion_adquirencia==1)/nrow(misc),
                                  100*sum(misc$Regulacion_adquirencia==0)/nrow(misc)+
                                  100*sum(misc$Regulacion_adquirencia==1)/nrow(misc)),1),
                                c(round(100*sum(misc$Regulacion_adquirencia==0)/nrow(misc),1),
                                  round(100*sum(misc$Regulacion_adquirencia==0)/nrow(misc)+
                                  100*sum(misc$Regulacion_adquirencia==1)/nrow(misc),1), "")
                                ) 
                         )
names(tabla_adq)<-c("Regulación en adquirencia", "Frecuencia", "Porcentaje", "Acumulado")

# vista de las tablas
tabla_ocde
País pertenece a la OCDE Frecuencia Porcentaje Acumulado
0 34 48.6 48.6
1 36 51.4 100
Total 70 100
tabla_int
Regulación en intercambio Frecuencia Porcentaje Acumulado
0 22 31.4 31.4
1 48 68.6 100
Total 70 100
tabla_adq
Regulación en adquirencia Frecuencia Porcentaje Acumulado
0 64 91.4 91.4
1 6 8.6 100
Total 70 100

2 Regresiones tasa de intercambio

2.1 Modelos base, AICc y BIC

La cantidad de países con información de la tasa de intercambio en la muestra es la siguiente:

misc<-datos[,c(1:3)]
misc<-na.omit(misc)
misc<-misc[!duplicated(misc[,1]),]
#Se elimina Costa Rica
misc<-misc[misc$Codigo_Pais!="CRI",]

#Cantidad de países con información de la tasa de intercambio en la muestra
nrow(misc)
## [1] 70

Se llevan a cabo múltiples especificaciones de regresión lineal para determinar la tasa de intercambio esperada para Costa Rica. Primero, se realizan estimaciones sin variables de control. Posteriormente, se utilizan criterios de información para seleccionar los controles a partir de una comparación entre la bondad de ajuste y la complejidad del modelo. En particular, estos criterios de información son el criterio de información de Akaike con una corrección para tamaños de muestra pequeños (AICc) y el criterio de información bayesiana (BIC).

#Elimino los NA de la variable respuesta:
datos_int=datos[,-5] # quita adquirencia para que no afecte en la eliminación de NA´s
datos_int=na.omit(datos_int)
sum(table(unique(datos_int$Pais)))
## [1] 53
  • Modelo sin controles
#remover NA's de la columna "Intercambio" y dejar los demás.
library(dplyr)
datos2=datos %>% 
  filter(!is.na(Intercambio))

modelo_int_sin_cont<-lm(Intercambio ~ Regulacion_intercambio, datos2)

# Errores robustos
modelo_int_sin_cont_corr_hc<-coeftest(modelo_int_sin_cont, vcov. = vcovHC(modelo_int_sin_cont, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_int_sin_cont_corr_hac<-coeftest(modelo_int_sin_cont, vcov. = vcovHAC(modelo_int_sin_cont, adjust = TRUE, sandwich = TRUE))
# Visualización
stargazer(modelo_int_sin_cont, modelo_int_sin_cont_corr_hc, type = "html", 
          title = "Regresión sobre la tasa de intercambio sin controles", 
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
Regresión sobre la tasa de intercambio sin controles
Variable dependiente
Tasa intercambio Tasa intercambio
MCO MCO HC
(1) (2)
Regulacion_intercambio -0.685*** -0.685***
(0.072) (0.072)
Constant 1.376*** 1.376***
(0.052) (0.055)
Observations 179
R2 0.337
Adjusted R2 0.334
Residual Std. Error 0.482 (df = 177)
F Statistic 90.106*** (df = 1; 177)
Note: p<0.1; p<0.05; p<0.01
#Pronóstico para CR
#Con solo una variable:
data_CR<-datos
data_CR[ which(datos$Codigo_Pais=="CRI"), which(names(datos)=="Regulacion_intercambio") ]<-1
#Sin regulación:
pred_int_sin_cont_sin_reg<-predict(modelo_int_sin_cont, newdata = datos, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
#Con regulación:
pred_int_sin_cont_con_reg<-predict(modelo_int_sin_cont, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
# Modelo con los controles
modelo_int_con_cont<-lm(Intercambio ~ Regulacion_intercambio + Cajero_Autom + Credito +
                          Crimen + Cuenta + Pago_digital + Debito + Densidad_Pob +
                          Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom + Europa + 
                          Asia_Este + Am_lat, datos_int)
# Errores robustos
modelo_int_con_cont_corr_hc<-coeftest(modelo_int_con_cont, vcov. = vcovHC(modelo_int_con_cont, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_int_con_cont_corr_hac<-coeftest(modelo_int_con_cont, vcov. = vcovHAC(modelo_int_con_cont, adjust = TRUE, sandwich = TRUE))

#stargazer(modelo_int_con_cont, modelo_int_con_cont_corr_hc, type = "html", 
#          title = "Regresión sobre la tasa de intercambio con todos los controles", 
#          column.labels = c("MCO","MCO HC"), model.names = F, 
#          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
#          dep.var.caption = "Variable dependiente")
#Pronóstico para CR
#Sin regulación
pred_int_con_cont_sin_reg<-predict(modelo_int_con_cont, newdata = datos, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
#Con regulación
pred_int_con_cont_con_reg<-predict(modelo_int_con_cont, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
  • Selección de variables mediante AICc sin efectos fijos de tiempo:

Para determinar si se debe hacer un ajuste por tamaño de muestra pequeña, se debe tener que \(\frac{n}{k} < 40\), donde n es la cantidad de observaciones y k es la cantidad de variables:

n=nrow(datos_int)
k=15
n/k
## [1] 9.466667
# Selección con AICc
datos_int<-datos %>% dplyr::select(-Adquirencia) %>% na.omit()

modelo_int_con_cont_aicc<-lm(formula = Intercambio ~ Regulacion_intercambio + Cajero_Autom +
                          Crimen + Cuenta + Pago_digital + Debito + Credito + Densidad_Pob +
                          Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom + Europa + 
                          Asia_Este + Am_lat, datos_int)

variables_controles<-c("Regulacion_intercambio", "Cajero_Autom", "Crimen", "Cuenta", "Pago_digital", "Debito", "Credito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH", "Valor_prom", "Europa", "Asia_Este", "Am_lat")

controles<- datos_int %>% dplyr::select(c(variables_controles)) %>% as.matrix()
## Note: Using an external vector in selections is ambiguous.
## ℹ Use `all_of(variables_controles)` instead of `variables_controles` to silence this message.
## ℹ See <https://tidyselect.r-lib.org/reference/faq-external-vector.html>.
## This message is displayed once per session.
#Paso 1
AICC<-c()
AICC[1]<-aicc(modelo_int_con_cont_aicc)

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la columna 6
controles<-controles[,-which.min(AICC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Pago_digital’”

variables_controles<-variables_controles[-which.min(AICC)]

#Paso 2
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la columna 14
controles<-controles[,-which.min(AICC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Credito’”

variables_controles<-variables_controles[-which.min(AICC)]

#Paso 3
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc elimina la siguiente variable
controles<-controles[,-which.min(AICC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Am_lat’”

variables_controles<-variables_controles[-which.min(AICC)]

#Paso 4
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc elimina la siguiente variable
controles<-controles[,-which.min(AICC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Densidad_Neg’”

variables_controles<-variables_controles[-which.min(AICC)]

#Paso 5
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc elimina la siguiente variable
controles<-controles[,-which.min(AICC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Valor_prom’”

variables_controles<-variables_controles[-which.min(AICC)]

#Paso 6
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc elimina la siguiente variable
controles<-controles[,-which.min(AICC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))

[1] “Se elimina por este criterio la variable: ‘PIB_pc_PPA’”

variables_controles<-variables_controles[-which.min(AICC)]

#Paso 7
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}

min(AICC)<AICC[1]

[1] FALSE

# El AICC ya no es menor, entonces no se eliminan columnas
controles1<-controles
print(paste0("El criterio deja las siguientes variables: ","'",variables_controles,"' "))

[1] “El criterio deja las siguientes variables: ‘Regulacion_intercambio’” [2] “El criterio deja las siguientes variables: ‘Cajero_Autom’”
[3] “El criterio deja las siguientes variables: ‘Crimen’”
[4] “El criterio deja las siguientes variables: ‘Cuenta’”
[5] “El criterio deja las siguientes variables: ‘Debito’”
[6] “El criterio deja las siguientes variables: ‘Densidad_Pob’”
[7] “El criterio deja las siguientes variables: ‘ICH’”
[8] “El criterio deja las siguientes variables: ‘Europa’”
[9] “El criterio deja las siguientes variables: ‘Asia_Este’”

# Estimación
modelo_int_con_cont_aicc=lm(Intercambio ~ Regulacion_intercambio + Cajero_Autom + 
                              Crimen + Cuenta + Debito + Densidad_Pob + ICH + 
                              Europa + Asia_Este,datos_int)
#Pronóstico para CR
#Sin regulación
pred_int_con_cont_aicc_sin_reg<-predict(modelo_int_con_cont_aicc, newdata = datos, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
#Con regulación
pred_int_con_cont_aicc_con_reg<-predict(modelo_int_con_cont_aicc, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
# Errores robustos
modelo_int_con_cont_aicc_corr_hc<-coeftest(modelo_int_con_cont_aicc, vcov. = vcovHC(modelo_int_con_cont_aicc, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_int_con_cont_aicc_corr_hac<-coeftest(modelo_int_con_cont_aicc, vcov. = vcovHAC(modelo_int_con_cont_aicc, adjust = TRUE, sandwich = TRUE))
# Visualización
stargazer(modelo_int_con_cont_aicc,
          type = "html", 
          title = "Regresión no lineal sobre la tasa de intercambio con todos los controles seleccionados mediante el AICc", 
          column.labels = c("MCO","MCO HC"), model.names = F,
          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
Regresión no lineal sobre la tasa de intercambio con todos los controles seleccionados mediante el AICc
Variable dependiente
Tasa intercambio
MCO
Regulacion_intercambio -0.584***
(0.052)
Cajero_Autom 0.001*
(0.001)
Crimen -0.022***
(0.004)
Cuenta -0.015***
(0.003)
Debito 0.005***
(0.002)
Densidad_Pob -0.001***
(0.0001)
ICH -1.350***
(0.482)
Europa -0.729***
(0.086)
Asia_Este -0.326***
(0.115)
Constant 3.675***
(0.283)
Observations 142
R2 0.816
Adjusted R2 0.804
Residual Std. Error 0.273 (df = 132)
F Statistic 65.128*** (df = 9; 132)
Note: p<0.1; p<0.05; p<0.01
  • Selección de variables mediante BIC sin efectos fijos de tiempo:
# modelo inicial o saturado
modelo_int_con_cont_bic<-lm(Intercambio ~ Regulacion_intercambio + Cajero_Autom +
                          Crimen + Cuenta + Pago_digital + Debito + Credito + Densidad_Pob +
                          Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom + Europa + 
                          Asia_Este + Am_lat, datos_int)

variables_controles<-c("Regulacion_intercambio", "Cajero_Autom", "Crimen", "Cuenta", "Pago_digital", "Debito", "Credito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH", "Valor_prom", "Europa", "Asia_Este", "Am_lat")

controles<- datos_int %>% dplyr::select(c(variables_controles)) %>% as.matrix()
# método BIC
#Paso 1
BIC<-c()
BIC[1]<-BIC(modelo_int_con_cont_bic)

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la columna 6
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Pago_digital’”

variables_controles<-variables_controles[-which.min(BIC)]

#Paso 2
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la columna 14
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Credito’”

variables_controles<-variables_controles[-which.min(BIC)]

#Paso 3
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la columna 9
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Am_lat’”

variables_controles<-variables_controles[-which.min(BIC)]

#Paso 4
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la columna 6
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Densidad_Neg’”

variables_controles<-variables_controles[-which.min(BIC)]

#Paso 5
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la columna 5
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Valor_prom’”

variables_controles<-variables_controles[-which.min(BIC)]

#Paso 6
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la columna 5
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))

[1] “Se elimina por este criterio la variable: ‘PIB_pc_PPA’”

variables_controles<-variables_controles[-which.min(BIC)]

#Paso 7
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la columna 5
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Cajero_Autom’”

variables_controles<-variables_controles[-which.min(BIC)]

#Paso 8
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}

min(BIC)<BIC[1]

[1] FALSE

#Ya no se eliminan columnas
controles2<-controles
print(paste0("Las variables que seleccionó el criterio son: ",variables_controles))

[1] “Las variables que seleccionó el criterio son: Regulacion_intercambio” [2] “Las variables que seleccionó el criterio son: Crimen”
[3] “Las variables que seleccionó el criterio son: Cuenta”
[4] “Las variables que seleccionó el criterio son: Debito”
[5] “Las variables que seleccionó el criterio son: Densidad_Pob”
[6] “Las variables que seleccionó el criterio son: ICH”
[7] “Las variables que seleccionó el criterio son: Europa”
[8] “Las variables que seleccionó el criterio son: Asia_Este”

# Estimación del modelo
modelo_int_con_cont_bic=lm(formula = Intercambio ~ Regulacion_intercambio + Crimen + 
    Cuenta + Debito + Densidad_Pob + ICH + Europa + Asia_Este, 
    data = datos_int)

modelo_int_con_cont_bic_corr_hc<-coeftest(modelo_int_con_cont_bic, vcov. = vcovHC(modelo_int_con_cont_bic, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_int_con_cont_bic_corr_hac<-coeftest(modelo_int_con_cont_bic, vcov. = vcovHAC(modelo_int_con_cont_bic, adjust = TRUE, sandwich = TRUE))
# Visualización
stargazer(modelo_int_con_cont_bic, modelo_int_con_cont_bic_corr_hc, type = "html",
          title = "Regresión sobre la tasa de intercambio según BIC", 
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
Regresión sobre la tasa de intercambio según BIC
Variable dependiente
Tasa intercambio Tasa intercambio
MCO MCO HC
(1) (2)
Regulacion_intercambio -0.594*** -0.594***
(0.052) (0.064)
Crimen -0.022*** -0.022***
(0.004) (0.004)
Cuenta -0.014*** -0.014***
(0.003) (0.003)
Debito 0.005** 0.005***
(0.002) (0.002)
Densidad_Pob -0.001*** -0.001***
(0.0001) (0.0001)
ICH -1.152** -1.152**
(0.475) (0.512)
Europa -0.769*** -0.769***
(0.084) (0.085)
Asia_Este -0.353*** -0.353***
(0.116) (0.084)
Constant 3.623*** 3.623***
(0.285) (0.302)
Observations 142
R2 0.811
Adjusted R2 0.800
Residual Std. Error 0.275 (df = 133)
F Statistic 71.386*** (df = 8; 133)
Note: p<0.1; p<0.05; p<0.01
#Pronóstico para CR
#Sin regulación
pred_int_con_cont_bic_sin_reg<-predict(modelo_int_con_cont_bic, newdata = datos_int, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
#Con regulación
pred_int_con_cont_bic_con_reg<-predict(modelo_int_con_cont_bic, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
# Modelo con los controles con efectos fijos de tiempo: 
modelo_int_con_cont_ef<-lm(Intercambio ~ Regulacion_intercambio + Cajero_Autom + Credito +
                             Crimen + Cuenta + Pago_digital + Debito + Densidad_Pob +
                             Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom + Europa +
                             Asia_Este + Am_lat + Año_2013 + Año_2014 + 
                             Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + 
                             Año_2021 + Año_2022, datos_int)

# errores robustos
modelo_int_con_cont_ef_corr_hc<-coeftest(modelo_int_con_cont_ef, vcov. = vcovHC(modelo_int_con_cont_ef, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_int_con_cont_ef_corr_hac<-coeftest(modelo_int_con_cont_ef, vcov. = vcovHAC(modelo_int_con_cont_ef, adjust = TRUE, sandwich = TRUE))

#stargazer(modelo_int_con_cont_ef, modelo_int_con_cont_ef_corr_hc,
#          type = "html", title = "Regresión sobre la tasa de intercambio con controles y efectos fijos de tiempo", 
#          column.labels = c("MCO","MCO HC"), model.names = F, dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), dep.var.caption = "Variable dependiente")

#Pronóstico para CR
#Sin regulación
pred_int_con_cont_ef_sin_reg<-predict(modelo_int_con_cont_ef, newdata = datos, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
#Con regulación
pred_int_con_cont_ef_con_reg<-predict(modelo_int_con_cont_ef, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
  • Selección de variables mediante AICc con efectos fijos de tiempo:
#Seleccionar el modelo utilizando el AICc (corrige por tamaño de muestra pequeña), más efectos fijos de tiempo
modelo_int_con_cont_ef_aicc<-lm(Intercambio ~ Regulacion_intercambio + Año_2010 + 
                                  Año_2011 + Año_2012 + Año_2013 + Año_2014 + 
                                  Año_2015 + Año_2016 + Año_2017 + Año_2018 +
                                  Año_2019 + Año_2020 + Año_2021 + Año_2022 +
                                  Cajero_Autom + Crimen + Cuenta + Pago_digital + 
                                  Debito + Credito + Densidad_Pob + Densidad_Neg +
                                  PIB_pc_PPA + ICH + Valor_prom + Europa +
                                  Asia_Este + Am_lat, datos_int)

variables_controles<-c("Regulacion_intercambio", "Año_2010", "Año_2011", "Año_2012",
                       "Año_2013","Año_2014", "Año_2015", "Año_2016", "Año_2017", 
                       "Año_2018", "Año_2019", "Año_2020","Año_2021", "Año_2022", 
                       "Cajero_Autom", "Crimen", "Cuenta", "Pago_digital", "Debito",
                       "Credito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH",
                       "Valor_prom","Europa", "Asia_Este", "Am_lat")

controles<- datos_int %>% dplyr::select(c(variables_controles)) %>% as.matrix()

#Paso 1
AICC<-c()
AICC[1]<-aicc(modelo_int_con_cont_ef_aicc)

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+13)], datos_int))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+13],"' "))

[1] “Se elimina por este criterio la variable: ‘Credito’”

variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 2
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+13)], datos_int))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la columna 15
controles<-controles[,-(which.min(AICC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+13],"' "))

[1] “Se elimina por este criterio la variable: ‘Pago_digital’”

variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 3
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+13)], datos_int))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+13],"' "))

[1] “Se elimina por este criterio la variable: ‘Densidad_Neg’”

variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 4
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+13)], datos_int))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la columna 19
controles<-controles[,-(which.min(AICC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+13],"' "))

[1] “Se elimina por este criterio la variable: ‘Am_lat’”

variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 5
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+13)], datos_int))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+13],"' "))

[1] “Se elimina por este criterio la variable: ‘Valor_prom’”

variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 6
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+13)], datos_int))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+13],"' "))

[1] “Se elimina por este criterio la variable: ‘PIB_pc_PPA’”

variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 7
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+13)], datos_int))  
}

min(AICC)<AICC[1]

[1] FALSE

#Ya no se eliminan columnas
controles3<-controles

#variables a usar
print(paste0("Este criterio deja las siguientes variables: ",variables_controles))

[1] “Este criterio deja las siguientes variables: Regulacion_intercambio” [2] “Este criterio deja las siguientes variables: Año_2010”
[3] “Este criterio deja las siguientes variables: Año_2011”
[4] “Este criterio deja las siguientes variables: Año_2012”
[5] “Este criterio deja las siguientes variables: Año_2013”
[6] “Este criterio deja las siguientes variables: Año_2014”
[7] “Este criterio deja las siguientes variables: Año_2015”
[8] “Este criterio deja las siguientes variables: Año_2016”
[9] “Este criterio deja las siguientes variables: Año_2017”
[10] “Este criterio deja las siguientes variables: Año_2018”
[11] “Este criterio deja las siguientes variables: Año_2019”
[12] “Este criterio deja las siguientes variables: Año_2020”
[13] “Este criterio deja las siguientes variables: Año_2021”
[14] “Este criterio deja las siguientes variables: Año_2022”
[15] “Este criterio deja las siguientes variables: Cajero_Autom”
[16] “Este criterio deja las siguientes variables: Crimen”
[17] “Este criterio deja las siguientes variables: Cuenta”
[18] “Este criterio deja las siguientes variables: Debito”
[19] “Este criterio deja las siguientes variables: Densidad_Pob”
[20] “Este criterio deja las siguientes variables: ICH”
[21] “Este criterio deja las siguientes variables: Europa”
[22] “Este criterio deja las siguientes variables: Asia_Este”

# Estimación del modelo:
modelo_int_con_cont_ef_aicc=lm(Intercambio ~ Regulacion_intercambio + Cajero_Autom + 
                                Crimen + Cuenta + Debito + Densidad_Pob + ICH + Europa +
                                Asia_Este + Año_2013 + Año_2014 + Año_2016 + Año_2017 + 
                                 Año_2018 + Año_2019 + Año_2020 + Año_2021 + Año_2022, 
                               data = datos_int)

modelo_int_con_cont_ef_aicc_corr_hc<-coeftest(modelo_int_con_cont_ef_aicc, vcov. = vcovHC(modelo_int_con_cont_ef_aicc, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_int_con_cont_ef_aicc_corr_hac<-coeftest(modelo_int_con_cont_ef_aicc, vcov. = vcovHAC(modelo_int_con_cont_ef_aicc, adjust = TRUE, sandwich = TRUE))

stargazer(modelo_int_con_cont_ef_aicc, modelo_int_con_cont_ef_aicc_corr_hc,type = "html", 
          title = "Regresión sobre la tasa de intercambio según AICc con efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
Regresión sobre la tasa de intercambio según AICc con efectos fijos de tiempo
Variable dependiente
Tasa intercambio Tasa intercambio
MCO MCO HC
(1) (2)
Regulacion_intercambio -0.599*** -0.599***
(0.073) (0.087)
Cajero_Autom 0.001 0.001
(0.001) (0.001)
Crimen -0.021*** -0.021***
(0.004) (0.004)
Cuenta -0.016*** -0.016***
(0.003) (0.003)
Debito 0.005** 0.005***
(0.002) (0.002)
Densidad_Pob -0.001*** -0.001***
(0.0002) (0.0001)
ICH -1.109** -1.109*
(0.536) (0.631)
Europa -0.697*** -0.697***
(0.094) (0.100)
Asia_Este -0.332*** -0.332***
(0.119) (0.094)
Año_2013 -0.131 -0.131
(0.147) (0.159)
Año_2014 -0.016 -0.016
(0.158) (0.145)
Año_2016 0.030 0.030
(0.153) (0.129)
Año_2017 -0.127 -0.127
(0.129) (0.112)
Año_2018 -0.059 -0.059
(0.144) (0.116)
Año_2019 -0.048 -0.048
(0.139) (0.137)
Año_2020 -0.045 -0.045
(0.137) (0.102)
Año_2021 -0.048 -0.048
(0.147) (0.131)
Año_2022 -0.120 -0.120
(0.186) (0.169)
Constant 3.596*** 3.596***
(0.313) (0.322)
Observations 142
R2 0.821
Adjusted R2 0.795
Residual Std. Error 0.279 (df = 123)
F Statistic 31.380*** (df = 18; 123)
Note: p<0.1; p<0.05; p<0.01
#Pronóstico para CR
#Sin regulación
pred_int_con_cont_ef_aic_sin_reg<-predict(modelo_int_con_cont_ef_aicc, newdata = datos, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
#Con regulación
pred_int_con_cont_ef_aic_con_reg<-predict(modelo_int_con_cont_ef_aicc, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
  • Selección de variables mediante BIC con efectos fijos de tiempo:
#Seleccionar el modelo utilizando el BIC, más efectos fijos de tiempo
modelo_int_con_cont_bic_ef<-lm(Intercambio ~ Regulacion_intercambio + Año_2010 + Año_2011 +
                                 Año_2012 + Año_2013 + Año_2014 + Año_2015 + Año_2016 +
                                 Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 +
                                 Año_2022 + Cajero_Autom + Crimen + Cuenta + Pago_digital +
                                 Debito + Credito + Densidad_Pob + Densidad_Neg + 
                                 PIB_pc_PPA + ICH + Valor_prom + Europa +
                                 Asia_Este + Am_lat, datos_int)

variables_controles<-c("Regulacion_intercambio", "Año_2010", "Año_2011", "Año_2012",
                       "Año_2013", "Año_2014", "Año_2015", "Año_2016", "Año_2017",
                       "Año_2018", "Año_2019", "Año_2020", "Año_2021","Año_2022",
                       "Cajero_Autom", "Crimen", "Cuenta", "Pago_digital", "Debito",
                       "Credito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH",
                       "Valor_prom","Europa", "Asia_Este", "Am_lat")

controles<- datos_int %>% dplyr::select(c(variables_controles)) %>% as.matrix()
#Paso 1
BIC<-c()
BIC[1]<-BIC(modelo_int_con_cont_bic_ef)

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+13)], datos_int))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+13],"' "))

[1] “Se elimina por este criterio la variable: ‘Credito’”

variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 2
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+13)], datos_int))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+13],"' "))

[1] “Se elimina por este criterio la variable: ‘Pago_digital’”

variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 3
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+13)], datos_int))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+13],"' "))

[1] “Se elimina por este criterio la variable: ‘Densidad_Neg’”

variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 4
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+13)], datos_int))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+13],"' "))

[1] “Se elimina por este criterio la variable: ‘Am_lat’”

variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 5
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+13)], datos_int))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+13],"' "))

[1] “Se elimina por este criterio la variable: ‘Valor_prom’”

variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 6
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+13)], datos_int))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+13],"' "))

[1] “Se elimina por este criterio la variable: ‘PIB_pc_PPA’”

variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 7
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+13)], datos_int))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+13],"' "))

[1] “Se elimina por este criterio la variable: ‘Cajero_Autom’”

variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 8
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+13)], datos_int))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la columna 17
controles<-controles[,-(which.min(BIC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+13],"' "))

[1] “Se elimina por este criterio la variable: ‘ICH’”

variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 9
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+13)], datos_int))  
}
min(BIC)<BIC[1]

[1] FALSE

#No se eliminan más columnas
controles4<-controles

# Estimación del modelo
modelo_int_con_cont_ef_bic=lm(Intercambio ~ Regulacion_intercambio + Crimen + Cuenta +
                                Debito + Densidad_Pob + Europa + Asia_Este + Año_2013 + 
                                Año_2014 + Año_2016 + Año_2017 + Año_2018 + Año_2019 + 
                                Año_2020 + Año_2021 + Año_2022, data = datos_int)


modelo_int_con_cont_ef_bic_corr_hc<-coeftest(modelo_int_con_cont_ef_bic, vcov. = vcovHC(modelo_int_con_cont_ef_bic, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_int_con_cont_ef_bic_corr_hac<-coeftest(modelo_int_con_cont_ef_bic, vcov. = vcovHAC(modelo_int_con_cont_ef_bic, adjust = TRUE, sandwich = TRUE))
# Visualización de resultados
stargazer(modelo_int_con_cont_ef_bic, modelo_int_con_cont_ef_bic_corr_hc,type = "html", 
          title = "Regresión sobre la tasa de intercambio según BIC con efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
Regresión sobre la tasa de intercambio según BIC con efectos fijos de tiempo
Variable dependiente
Tasa intercambio Tasa intercambio
MCO MCO HC
(1) (2)
Regulacion_intercambio -0.662*** -0.662***
(0.068) (0.074)
Crimen -0.018*** -0.018***
(0.004) (0.005)
Cuenta -0.016*** -0.016***
(0.003) (0.003)
Debito 0.005** 0.005**
(0.002) (0.002)
Densidad_Pob -0.001*** -0.001***
(0.0002) (0.0001)
Europa -0.723*** -0.723***
(0.093) (0.098)
Asia_Este -0.328*** -0.328***
(0.119) (0.096)
Año_2013 -0.230 -0.230*
(0.143) (0.132)
Año_2014 -0.024 -0.024
(0.160) (0.136)
Año_2016 -0.020 -0.020
(0.154) (0.121)
Año_2017 -0.186 -0.186*
(0.128) (0.098)
Año_2018 -0.107 -0.107
(0.144) (0.110)
Año_2019 -0.083 -0.083
(0.140) (0.135)
Año_2020 -0.078 -0.078
(0.138) (0.097)
Año_2021 -0.095 -0.095
(0.147) (0.128)
Año_2022 -0.159 -0.159
(0.186) (0.139)
Constant 3.107*** 3.107***
(0.180) (0.191)
Observations 142
R2 0.813
Adjusted R2 0.789
Residual Std. Error 0.283 (df = 125)
F Statistic 33.990*** (df = 16; 125)
Note: p<0.1; p<0.05; p<0.01
#Pronóstico para CR
#Sin regulación
pred_modelo_int_con_cont_bic_ef_sin_reg<-predict(modelo_int_con_cont_ef_bic, newdata = datos, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
#Con regulación
pred_modelo_int_con_cont_bic_ef_con_reg<-predict(modelo_int_con_cont_ef_bic, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

2.2 Regresiones con truncamiento tasa de intercambio

Una crítica a los modelos de regresión lineal anteriores es que no toman en consideración el posible truncamiento de la variable de respuesta. Una variable es truncada cuando no puede observarse su valor después de cierto umbral en otra variable que la define (llamada variable latente). En el caso de las comisiones de intercambio y adquirencia, no es posible observar valores negativos. Igualmente, no debería ser posible observar tasas por debajo del costo de operación. Por ello, se realiza el ejercicio de estimar modelos con un truncamiento de tasas de intercambio en 0 y 0.27 (mínimo valor en la muestra, que corresponde a España).

Truncado en 0:
En primer lugar, se realiza la estimación de modelos truncados usando las variables seleccionadas según el criterio de AICc:

#Se realiza modelos truncados
#AICc
#Truncamiento en 0
modelo_truncado_int_0_aicc<-truncreg(Intercambio ~ Regulacion_intercambio + Cajero_Autom + 
                              Crimen + Cuenta + Debito + Densidad_Pob + ICH + Europa +
                              Asia_Este, datos_int, point = 0, direction = "left", 
                              model = TRUE, y = FALSE, x = FALSE, scaled = TRUE)
# modelo estimado
summary(modelo_truncado_int_0_aicc)
## 
## Call:
## truncreg(formula = Intercambio ~ Regulacion_intercambio + Cajero_Autom + 
##     Crimen + Cuenta + Debito + Densidad_Pob + ICH + Europa + 
##     Asia_Este, data = datos_int, point = 0, direction = "left", 
##     model = TRUE, y = FALSE, x = FALSE, scaled = TRUE)
## 
## BFGS maximization method
## 0 iterations, 0h:0m:0s 
## g'(-H)^-1g = 4.64E-11 
##  
## 
## 
## Coefficients :
##                           Estimate  Std. Error  t-value  Pr(>|t|)    
## (Intercept)             3.80068854  0.29740929  12.7793 < 2.2e-16 ***
## Regulacion_intercambio -0.62534732  0.05621261 -11.1247 < 2.2e-16 ***
## Cajero_Autom            0.00152372  0.00077722   1.9605  0.049941 *  
## Crimen                 -0.02322851  0.00435114  -5.3385 9.373e-08 ***
## Cuenta                 -0.01495326  0.00272884  -5.4797 4.260e-08 ***
## Debito                  0.00439650  0.00210447   2.0891  0.036697 *  
## Densidad_Pob           -0.00075361  0.00017460  -4.3163 1.587e-05 ***
## ICH                    -1.46732685  0.50659851  -2.8964  0.003774 ** 
## Europa                 -0.75976096  0.08953503  -8.4856 < 2.2e-16 ***
## Asia_Este              -0.30956185  0.11903833  -2.6005  0.009308 ** 
## sigma                   0.27684545  0.01812586  15.2735 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Log-Likelihood: -4.995 on 11 Df
#Pronóstico para CR
#Sin regulación
pred_int_trunc_0_aicc_sin_reg<-predict(modelo_truncado_int_0_aicc, newdata = datos, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
#Con regulación
pred_int_trunc_0_aicc_con_reg<-predict(modelo_truncado_int_0_aicc, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
  • BIC:
    Ahora se realiza la estimación de modelos truncados usando las variables seleccionadas mediante el criterio de BIC.
#BIC
#Truncamiento en 0
modelo_truncado_int_0_bic<-truncreg(Intercambio ~ Regulacion_intercambio + Crimen + Cuenta +
                                      Debito + Densidad_Pob + ICH + Europa + Asia_Este,
                                    datos_int, point = 0, direction = "left",
                                    model = TRUE, y = FALSE, x = FALSE, scaled = TRUE)
# modelo estimado
summary(modelo_truncado_int_0_bic)
## 
## Call:
## truncreg(formula = Intercambio ~ Regulacion_intercambio + Crimen + 
##     Cuenta + Debito + Densidad_Pob + ICH + Europa + Asia_Este, 
##     data = datos_int, point = 0, direction = "left", model = TRUE, 
##     y = FALSE, x = FALSE, scaled = TRUE)
## 
## BFGS maximization method
## 0 iterations, 0h:0m:0s 
## g'(-H)^-1g = 3.91E-12 
##  
## 
## 
## Coefficients :
##                           Estimate  Std. Error  t-value  Pr(>|t|)    
## (Intercept)             3.73896356  0.30026534  12.4522 < 2.2e-16 ***
## Regulacion_intercambio -0.63807853  0.05711752 -11.1713 < 2.2e-16 ***
## Crimen                 -0.02333468  0.00442299  -5.2758 1.322e-07 ***
## Cuenta                 -0.01374830  0.00270589  -5.0809 3.757e-07 ***
## Debito                  0.00407991  0.00213546   1.9105  0.056063 .  
## Densidad_Pob           -0.00081959  0.00017422  -4.7043 2.547e-06 ***
## ICH                    -1.23322635  0.50006671  -2.4661  0.013658 *  
## Europa                 -0.80747105  0.08795141  -9.1809 < 2.2e-16 ***
## Asia_Este              -0.33871809  0.11992104  -2.8245  0.004735 ** 
## sigma                   0.28132989  0.01849773  15.2089 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Log-Likelihood: -6.8896 on 10 Df
#Pronóstico para CR
#Sin regulación
pred_int_trunc_0_bic_sin_reg<-predict(modelo_truncado_int_0_bic, newdata = datos, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
#Con regulación
pred_int_trunc_0_bic_con_reg<-predict(modelo_truncado_int_0_bic, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Ahora se procede a realizar las estimaciones con truncamiento contemplando efectos fijos de tiempo:
* Por AICc:

#AICc con efectos fijos de tiempo
#Truncamiento en 0
modelo_truncado_int_0_aicc_ef<-truncreg(Intercambio ~ Regulacion_intercambio + Cajero_Autom +
                                          Crimen + Cuenta + Debito + Densidad_Pob + ICH +
                                          Europa + Asia_Este + Año_2013 + Año_2014 + 
                                          Año_2015 + Año_2016 + Año_2017 + Año_2018 +
                                          Año_2019 + Año_2020 + Año_2021, data = datos_int,
                                        point = 0, direction = "left", model = TRUE,
                                        y = FALSE, x = FALSE, scaled = TRUE)
# Modelo estimado
summary(modelo_truncado_int_0_aicc_ef)
## 
## Call:
## truncreg(formula = Intercambio ~ Regulacion_intercambio + Cajero_Autom + 
##     Crimen + Cuenta + Debito + Densidad_Pob + ICH + Europa + 
##     Asia_Este + Año_2013 + Año_2014 + Año_2015 + Año_2016 + 
##     Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021, 
##     data = datos_int, point = 0, direction = "left", model = TRUE, 
##     y = FALSE, x = FALSE, scaled = TRUE)
## 
## BFGS maximization method
## 0 iterations, 0h:0m:0s 
## g'(-H)^-1g = 7.62E-12 
##  
## 
## 
## Coefficients :
##                           Estimate  Std. Error t-value  Pr(>|t|)    
## (Intercept)             3.64737516  0.33933414 10.7486 < 2.2e-16 ***
## Regulacion_intercambio -0.60640629  0.07336405 -8.2657 2.220e-16 ***
## Cajero_Autom            0.00142778  0.00079300  1.8005   0.07179 .  
## Crimen                 -0.02250999  0.00441233 -5.1016 3.368e-07 ***
## Cuenta                 -0.01544020  0.00287468 -5.3711 7.826e-08 ***
## Debito                  0.00466168  0.00214364  2.1747   0.02966 *  
## Densidad_Pob           -0.00070834  0.00017933 -3.9500 7.814e-05 ***
## ICH                    -1.29854993  0.54912281 -2.3648   0.01804 *  
## Europa                 -0.72198853  0.09500976 -7.5991 2.975e-14 ***
## Asia_Este              -0.31661373  0.11947815 -2.6500   0.00805 ** 
## Año_2013                0.01502825  0.17506148  0.0858   0.93159    
## Año_2014                0.08316549  0.18610051  0.4469   0.65496    
## Año_2015                0.08780427  0.19024475  0.4615   0.64442    
## Año_2016                0.13554920  0.17865431  0.7587   0.44802    
## Año_2017               -0.05066515  0.15892075 -0.3188   0.74987    
## Año_2018                0.05215543  0.17016412  0.3065   0.75922    
## Año_2019                0.06399506  0.16534722  0.3870   0.69873    
## Año_2020                0.06582070  0.16401592  0.4013   0.68819    
## Año_2021                0.05930342  0.17010165  0.3486   0.72736    
## sigma                   0.27336731  0.01798444 15.2002 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Log-Likelihood: -3.1265 on 20 Df
#Pronóstico para CR
#Sin regulación
pred_int_trunc_0_aicc_ef_sin_reg<-predict(modelo_truncado_int_0_aicc_ef, newdata = datos, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
#Con regulación
pred_int_trunc_0_aicc_ef_con_reg<-predict(modelo_truncado_int_0_aicc_ef, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
  • Por BIC:
#BIC
#Truncamiento en 0
modelo_truncado_int_0_bic_ef<-truncreg(Intercambio ~ Regulacion_intercambio + Crimen + 
                                         Cuenta + Debito + Densidad_Pob + Europa + 
                                         Asia_Este + Año_2013 + Año_2014 + Año_2015 +
                                         Año_2016 + Año_2017 + Año_2018 + Año_2019 + 
                                         Año_2020 + Año_2021, data = datos_int, point = 0,
                                       direction = "left", model = TRUE, y = FALSE, 
                                       x = FALSE, scaled = TRUE)
# modelo estimado
summary(modelo_truncado_int_0_bic_ef)
## 
## Call:
## truncreg(formula = Intercambio ~ Regulacion_intercambio + Crimen + 
##     Cuenta + Debito + Densidad_Pob + Europa + Asia_Este + Año_2013 + 
##     Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + 
##     Año_2019 + Año_2020 + Año_2021, data = datos_int, point = 0, 
##     direction = "left", model = TRUE, y = FALSE, x = FALSE, scaled = TRUE)
## 
## BFGS maximization method
## 0 iterations, 0h:0m:0s 
## g'(-H)^-1g = 4.63E-11 
##  
## 
## 
## Coefficients :
##                           Estimate  Std. Error t-value  Pr(>|t|)    
## (Intercept)             3.02500824  0.21397197 14.1374 < 2.2e-16 ***
## Regulacion_intercambio -0.68168460  0.06889684 -9.8943 < 2.2e-16 ***
## Crimen                 -0.01948194  0.00420341 -4.6348 3.573e-06 ***
## Cuenta                 -0.01598124  0.00271126 -5.8944 3.761e-09 ***
## Debito                  0.00408706  0.00218258  1.8726  0.061126 .  
## Densidad_Pob           -0.00073159  0.00017965 -4.0723 4.656e-05 ***
## Europa                 -0.75565346  0.09430256 -8.0131 1.110e-15 ***
## Asia_Este              -0.31577374  0.11966305 -2.6389  0.008319 ** 
## Año_2013               -0.05218788  0.17492304 -0.2983  0.765438    
## Año_2014                0.12434884  0.18980018  0.6552  0.512367    
## Año_2015                0.14107678  0.19244335  0.7331  0.463508    
## Año_2016                0.12823398  0.18114491  0.7079  0.479002    
## Año_2017               -0.06776582  0.16096075 -0.4210  0.673749    
## Año_2018                0.04433434  0.17298520  0.2563  0.797727    
## Año_2019                0.07335396  0.16878056  0.4346  0.663844    
## Año_2020                0.07564555  0.16788000  0.4506  0.652283    
## Año_2021                0.04964660  0.17472456  0.2841  0.776301    
## sigma                   0.27998729  0.01850408 15.1311 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Log-Likelihood: -6.6129 on 18 Df
#Pronóstico para CR
#Sin regulación
pred_int_trunc_0_bic_ef_sin_reg<-predict(modelo_truncado_int_0_bic_ef, newdata = datos, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
#Con regulación
pred_int_trunc_0_bic_ef_con_reg<-predict(modelo_truncado_int_0_bic_ef, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Truncado en 0.27:
Luego se trunca en 0.27 (mínimo valor en la muestra, que corresponde a España):

  • AICc:
#Truncamiento en 0.27 tasa intercambio mínima en la muestra de España

modelo_truncado_int_0.27_aicc<-truncreg(Intercambio ~ Regulacion_intercambio + Cajero_Autom +
                              Crimen + Cuenta + Debito + Densidad_Pob + ICH + Europa +
                              Asia_Este, datos_int, point = 0.27, direction = "left", 
                              model = TRUE, y = FALSE, x = FALSE, scaled = TRUE)
# modelo estimado
summary(modelo_truncado_int_0.27_aicc)
## 
## Call:
## truncreg(formula = Intercambio ~ Regulacion_intercambio + Cajero_Autom + 
##     Crimen + Cuenta + Debito + Densidad_Pob + ICH + Europa + 
##     Asia_Este, data = datos_int, point = 0.27, direction = "left", 
##     model = TRUE, y = FALSE, x = FALSE, scaled = TRUE)
## 
## BFGS maximization method
## 0 iterations, 0h:0m:0s 
## g'(-H)^-1g = 6.71E-10 
##  
## 
## 
## Coefficients :
##                           Estimate  Std. Error  t-value  Pr(>|t|)    
## (Intercept)             4.17779408  0.33650962  12.4151 < 2.2e-16 ***
## Regulacion_intercambio -0.80072888  0.07181875 -11.1493 < 2.2e-16 ***
## Cajero_Autom            0.00171640  0.00090698   1.8924   0.05843 .  
## Crimen                 -0.02718694  0.00461665  -5.8889 3.888e-09 ***
## Cuenta                 -0.01506343  0.00313178  -4.8099 1.510e-06 ***
## Debito                  0.00249571  0.00250085   0.9979   0.31831    
## Densidad_Pob           -0.00095280  0.00022612  -4.2137 2.513e-05 ***
## ICH                    -1.70574032  0.57396623  -2.9718   0.00296 ** 
## Europa                 -0.88155872  0.09982255  -8.8313 < 2.2e-16 ***
## Asia_Este              -0.21788576  0.12997683  -1.6763   0.09367 .  
## sigma                   0.28468883  0.01987064  14.3271 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Log-Likelihood: 28.027 on 11 Df
#Pronóstico para CR
#Sin regulación
pred_int_trunc_0.27_aicc_sin_reg<-predict(modelo_truncado_int_0.27_aicc, newdata = datos, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
#Con regulación
pred_int_trunc_0.27_aicc_con_reg<-predict(modelo_truncado_int_0.27_aicc, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
  • BIC:
    Ahora se realiza la estimación de modelos truncados usando las variables seleccionadas mediante el criterio de BIC.
#Truncado en 0.27
modelo_truncado_int_0.27_bic<-truncreg(Intercambio ~Regulacion_intercambio + Crimen + 
                                         Cuenta + Debito + Densidad_Pob + ICH + Europa + 
                                         Asia_Este, datos_int, point = 0.27, 
                                       direction = "left", model = TRUE, y = FALSE, 
                                       x = FALSE, scaled = TRUE)
# modelo estimado
summary(modelo_truncado_int_0.27_bic)
## 
## Call:
## truncreg(formula = Intercambio ~ Regulacion_intercambio + Crimen + 
##     Cuenta + Debito + Densidad_Pob + ICH + Europa + Asia_Este, 
##     data = datos_int, point = 0.27, direction = "left", model = TRUE, 
##     y = FALSE, x = FALSE, scaled = TRUE)
## 
## BFGS maximization method
## 0 iterations, 0h:0m:0s 
## g'(-H)^-1g = 1.32E-09 
##  
## 
## 
## Coefficients :
##                           Estimate  Std. Error  t-value  Pr(>|t|)    
## (Intercept)             4.11483574  0.34232436  12.0203 < 2.2e-16 ***
## Regulacion_intercambio -0.82299374  0.07365309 -11.1739 < 2.2e-16 ***
## Crimen                 -0.02735867  0.00472167  -5.7943 6.861e-09 ***
## Cuenta                 -0.01395783  0.00317521  -4.3959 1.103e-05 ***
## Debito                  0.00229723  0.00258520   0.8886   0.37421    
## Densidad_Pob           -0.00103693  0.00022736  -4.5607 5.099e-06 ***
## ICH                    -1.43191239  0.56703443  -2.5253   0.01156 *  
## Europa                 -0.93976086  0.09835803  -9.5545 < 2.2e-16 ***
## Asia_Este              -0.24984384  0.13205563  -1.8920   0.05850 .  
## sigma                   0.29065446  0.02043309  14.2247 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Log-Likelihood: 26.277 on 10 Df
#Pronóstico para CR
#Sin regulación
pred_int_trunc_0.27_bic_sin_reg<-predict(modelo_truncado_int_0.27_bic, newdata = datos, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
#Con regulación
pred_int_trunc_0.27_bic_con_reg<-predict(modelo_truncado_int_0.27_bic, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(data_CR$Codigo_Pais=="CRI")]

Ahora se procede a realizar las estimaciones con truncamiento contemplando efectos fijos de tiempo:
* Por AICc:

#AICc con efectos fijos de tiempo
#Truncamiento en 0.27
modelo_truncado_int_0.27_aicc_ef<-truncreg(Intercambio ~ Regulacion_intercambio +
                                             Cajero_Autom +Crimen + Cuenta + Debito + 
                                             Densidad_Pob + ICH + Europa + Asia_Este +
                                             Año_2013 + Año_2014 + Año_2015 + Año_2016 +
                                             Año_2017 + Año_2018 + Año_2019 + Año_2020 +
                                             Año_2021, data = datos_int, point = 0.27, 
                                           direction = "left", model = TRUE, y = FALSE,
                                           x = FALSE, scaled = TRUE)
# Modelo estimado
summary(modelo_truncado_int_0.27_aicc_ef)
## 
## Call:
## truncreg(formula = Intercambio ~ Regulacion_intercambio + Cajero_Autom + 
##     Crimen + Cuenta + Debito + Densidad_Pob + ICH + Europa + 
##     Asia_Este + Año_2013 + Año_2014 + Año_2015 + Año_2016 + 
##     Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021, 
##     data = datos_int, point = 0.27, direction = "left", model = TRUE, 
##     y = FALSE, x = FALSE, scaled = TRUE)
## 
## BFGS maximization method
## 0 iterations, 0h:0m:0s 
## g'(-H)^-1g = 5.82E-09 
##  
## 
## 
## Coefficients :
##                           Estimate  Std. Error t-value  Pr(>|t|)    
## (Intercept)             4.41677429  0.41790585 10.5688 < 2.2e-16 ***
## Regulacion_intercambio -0.68182403  0.08335551 -8.1797 2.220e-16 ***
## Cajero_Autom            0.00213895  0.00096050  2.2269   0.02595 *  
## Crimen                 -0.02722961  0.00475863 -5.7221 1.052e-08 ***
## Cuenta                 -0.01700696  0.00339585 -5.0082 5.495e-07 ***
## Debito                  0.00289815  0.00259133  1.1184   0.26340    
## Densidad_Pob           -0.00091746  0.00023187 -3.9568 7.596e-05 ***
## ICH                    -2.01759879  0.64361338 -3.1348   0.00172 ** 
## Europa                 -0.85304364  0.10916365 -7.8144 5.551e-15 ***
## Asia_Este              -0.18853524  0.13560710 -1.3903   0.16444    
## Año_2013                0.11862066  0.20241332  0.5860   0.55785    
## Año_2014               -0.04187281  0.21929823 -0.1909   0.84857    
## Año_2015               -0.10742073  0.22890707 -0.4693   0.63887    
## Año_2016                0.01619582  0.21171169  0.0765   0.93902    
## Año_2017               -0.27946799  0.19477407 -1.4348   0.15134    
## Año_2018               -0.02577240  0.19893592 -0.1296   0.89692    
## Año_2019               -0.01165791  0.19486359 -0.0598   0.95229    
## Año_2020                0.03198469  0.19077773  0.1677   0.86686    
## Año_2021               -0.00597168  0.19923663 -0.0300   0.97609    
## sigma                   0.28427228  0.02007472 14.1607 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Log-Likelihood: 34.771 on 20 Df
#Pronóstico para CR
#Sin regulación
pred_int_trunc_0.27_aicc_ef_sin_reg<-predict(modelo_truncado_int_0.27_aicc_ef, newdata = datos, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
#Con regulación
pred_int_trunc_0.27_aicc_ef_con_reg<-predict(modelo_truncado_int_0.27_aicc_ef, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
  • Por BIC:
#Truncado en 0.27
modelo_truncado_int_0.27_bic_ef<-truncreg(Intercambio ~ Regulacion_intercambio + Crimen + 
                                         Cuenta + Debito + Densidad_Pob + Europa + 
                                         Asia_Este + Año_2013 + Año_2014 + Año_2015 +
                                         Año_2016 + Año_2017 + Año_2018 + Año_2019 + 
                                         Año_2020 + Año_2021, data = datos_int, point = 0.27,
                                       direction = "left", model = TRUE, y = FALSE, 
                                       x = FALSE, scaled = TRUE)
# modelo estimado
summary(modelo_truncado_int_0.27_bic_ef)
## 
## Call:
## truncreg(formula = Intercambio ~ Regulacion_intercambio + Crimen + 
##     Cuenta + Debito + Densidad_Pob + Europa + Asia_Este + Año_2013 + 
##     Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + 
##     Año_2019 + Año_2020 + Año_2021, data = datos_int, point = 0.27, 
##     direction = "left", model = TRUE, y = FALSE, x = FALSE, scaled = TRUE)
## 
## BFGS maximization method
## 0 iterations, 0h:0m:0s 
## g'(-H)^-1g = 1.16E-08 
##  
## 
## 
## Coefficients :
##                           Estimate  Std. Error t-value  Pr(>|t|)    
## (Intercept)             3.41757245  0.26346716 12.9715 < 2.2e-16 ***
## Regulacion_intercambio -0.80460311  0.08104007 -9.9285 < 2.2e-16 ***
## Crimen                 -0.02290420  0.00462622 -4.9510 7.385e-07 ***
## Cuenta                 -0.01776664  0.00335074 -5.3023 1.143e-07 ***
## Debito                  0.00223704  0.00269975  0.8286    0.4073    
## Densidad_Pob           -0.00097713  0.00024039 -4.0647 4.810e-05 ***
## Europa                 -0.91809062  0.11138508 -8.2425 2.220e-16 ***
## Asia_Este              -0.20413802  0.13715393 -1.4884    0.1366    
## Año_2013                0.03139838  0.20803023  0.1509    0.8800    
## Año_2014                0.04657995  0.22769950  0.2046    0.8379    
## Año_2015                0.00655908  0.23465577  0.0280    0.9777    
## Año_2016                0.03179645  0.21841187  0.1456    0.8843    
## Año_2017               -0.27946082  0.20311583 -1.3759    0.1689    
## Año_2018               -0.01852778  0.20697446 -0.0895    0.9287    
## Año_2019                0.02651195  0.20340124  0.1303    0.8963    
## Año_2020                0.06617910  0.20066931  0.3298    0.7416    
## Año_2021               -0.01777599  0.21078436 -0.0843    0.9328    
## sigma                   0.29545292  0.02115889 13.9635 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Log-Likelihood: 29.04 on 18 Df
#Pronóstico para CR
#Sin regulación
pred_int_trunc_0.27_bic_ef_sin_reg<-predict(modelo_truncado_int_0.27_bic_ef, newdata = datos, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

#Con regulación
pred_int_trunc_0.27_bic_ef_con_reg<-predict(modelo_truncado_int_0.27_bic_ef, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(data_CR$Codigo_Pais=="CRI")]

2.3 Transformación logarítmica de la variable dependiente:

#Con toda la muestra con logaritmo

#Regresión sin controles
modelo_log_int_sin_cont<-lm(log(Intercambio) ~ Regulacion_intercambio, datos_int)

modelo_log_int_sin_cont_corr_hc<-coeftest(modelo_log_int_sin_cont, vcov. = vcovHC(modelo_log_int_sin_cont, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_log_int_sin_cont_corr_hac<-coeftest(modelo_log_int_sin_cont, vcov. = vcovHAC(modelo_log_int_sin_cont, adjust = TRUE, sandwich = TRUE))
# Visualización 
#stargazer(modelo_log_int_sin_cont, modelo_log_int_sin_cont_corr_hc, type = "html",
#          title = "Regresión sobre el logaritmo de la tasa de intercambio sin controles",
#          column.labels = c("MCO","MCO HC"), model.names = F, 
#          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
#          dep.var.caption = "Variable dependiente")

#Pronóstico para CR
#Sin regulación
pred_log_int_sin_cont_sin_reg<-exp(predict(modelo_log_int_sin_cont, newdata = datos, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")])
#Con regulación
pred_log_int_sin_cont_con_reg<-exp(predict(modelo_log_int_sin_cont, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")])
  • Regresión con todos los controles:
#Estimacion modelo
modelo_log_int_con_cont=lm(formula = log(Intercambio) ~ Regulacion_intercambio + Cajero_Autom + 
    Credito + Crimen + Cuenta + Pago_digital + Debito + Densidad_Pob + 
    Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom + Europa + Asia_Este + 
    Am_lat, data = datos_int)

modelo_log_int_con_cont_corr_hc<-coeftest(modelo_log_int_con_cont, vcov. = vcovHC(modelo_log_int_con_cont, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_log_int_con_cont_corr_hac<-coeftest(modelo_log_int_con_cont, vcov. = vcovHAC(modelo_log_int_con_cont, adjust = TRUE, sandwich = TRUE))

#stargazer(modelo_log_int_con_cont, modelo_log_int_con_cont_corr_hc, type = "html", 
#          title = "Regresión sobre el logaritmo de la tasa de intercambio con todos los controles",
#          column.labels = c("MCO","MCO HC"), model.names = F, 
#          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
#          dep.var.caption = "Variable dependiente")

#Pronóstico para CR
#Sin regulación
pred_log_int_con_cont_sin_reg<-exp(predict(modelo_log_int_con_cont, newdata = datos, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")])
#Con regulación
pred_log_int_con_cont_con_reg<-exp(predict(modelo_log_int_con_cont, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")])
#Regresión con todos los controles más efectos fijos de tiempo
modelo_log_int_con_cont_ef<-lm(log(Intercambio) ~ Regulacion_intercambio + Cajero_Autom + 
                                 Credito + Crimen + Cuenta + Pago_digital + Debito + Densidad_Pob + 
                                 Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom + Europa + Asia_Este + 
                                 Am_lat + Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + 
                                 Año_2018 + Año_2019 + Año_2020 + Año_2021, datos_int)
# Errores robustos
modelo_log_int_con_cont_ef_corr_hc<-coeftest(modelo_log_int_con_cont_ef, vcov. = vcovHC(modelo_log_int_con_cont_ef, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_log_int_con_cont_ef_corr_hac<-coeftest(modelo_log_int_con_cont_ef, vcov. = vcovHAC(modelo_log_int_con_cont_ef, adjust = TRUE, sandwich = TRUE))
#Pronóstico para CR
#Sin regulación
pred_log_int_con_cont_sin_reg_ef<-exp(predict(modelo_log_int_con_cont_ef, newdata = datos, interval = "prediction", level = 0.95, type = "response"))[which(datos$Codigo_Pais=="CRI")]
#Con regulación
pred_log_int_con_cont_con_reg_ef<-exp(predict(modelo_log_int_con_cont_ef, newdata = data_CR, interval = "prediction", level = 0.95, type = "response"))[which(datos$Codigo_Pais=="CRI")]
#Visualización
stargazer(modelo_log_int_con_cont_ef, type = "html",
          title = "Regresión sobre el logaritmo de la tasa de intercambio con controles y efectos fijos de tiempo",
          column.labels = c("MCO"), model.names = F, 
          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
Regresión sobre el logaritmo de la tasa de intercambio con controles y efectos fijos de tiempo
Variable dependiente
Tasa intercambio
MCO
Regulacion_intercambio -0.644***
(0.092)
Cajero_Autom -0.0001
(0.001)
Credito 0.002
(0.004)
Crimen -0.015***
(0.006)
Cuenta -0.008
(0.009)
Pago_digital -0.010
(0.010)
Debito 0.003
(0.003)
Densidad_Pob -0.001**
(0.0002)
Densidad_Neg -0.007
(0.008)
PIB_pc_PPA 0.00000
(0.00000)
ICH -1.249
(0.763)
Valor_prom -0.002*
(0.001)
Europa -0.726***
(0.184)
Asia_Este 0.102
(0.213)
Am_lat -0.091
(0.194)
Año_2013 0.154
(0.217)
Año_2014 0.083
(0.223)
Año_2015 0.003
(0.226)
Año_2016 -0.082
(0.215)
Año_2017 -0.172
(0.191)
Año_2018 -0.010
(0.207)
Año_2019 -0.023
(0.202)
Año_2020 0.141
(0.197)
Año_2021 0.092
(0.201)
Constant 2.780***
(0.550)
Observations 142
R2 0.819
Adjusted R2 0.782
Residual Std. Error 0.329 (df = 117)
F Statistic 22.118*** (df = 24; 117)
Note: p<0.1; p<0.05; p<0.01
  • Selección de variables mediante AICc sin efectos fijos de tiempo:
# Modelo con controles sin efectos fijos del tiempo:
#AICc:
modelo_log_int_con_cont_aicc<-lm(log(Intercambio) ~ Regulacion_intercambio + Cajero_Autom +
                                   Crimen + Cuenta + Pago_digital + Debito + Credito + 
                                   Densidad_Pob + Densidad_Neg + PIB_pc_PPA + ICH +
                                   Valor_prom + Europa + Asia_Este + Am_lat, datos_int)

variables_controles<-c("Regulacion_intercambio", "Cajero_Autom", "Crimen", "Cuenta",
                       "Pago_digital", "Debito", "Credito", "Densidad_Pob", "Densidad_Neg",
                       "PIB_pc_PPA", "ICH", "Valor_prom", "Europa", "Asia_Este", "Am_lat")

controles<- datos_int %>% dplyr::select(c(variables_controles)) %>% as.matrix()

#Paso 1
AICC<-c()
AICC[1]<-aicc(modelo_log_int_con_cont_aicc)

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(log(Intercambio) ~ controles[,-c(i)], datos_int))  
}

min(AICC)<AICC[1]
## [1] TRUE
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
## [1] "Se elimina por este criterio la variable: 'Debito' "
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 2
AICC<-c()
AICC[1]<-aicc(lm(log(Intercambio) ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(log(Intercambio) ~ controles[,-c(i)], datos_int))  
}

min(AICC)<AICC[1]
## [1] TRUE
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
## [1] "Se elimina por este criterio la variable: 'Am_lat' "
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 3
AICC<-c()
AICC[1]<-aicc(lm(log(Intercambio) ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(log(Intercambio) ~ controles[,-c(i)], datos_int))  
}

min(AICC)<AICC[1]
## [1] TRUE
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
## [1] "Se elimina por este criterio la variable: 'Cajero_Autom' "
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 4
AICC<-c()
AICC[1]<-aicc(lm(log(Intercambio) ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(log(Intercambio) ~ controles[,-c(i)], datos_int))  
}

min(AICC)<AICC[1]
## [1] TRUE
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
## [1] "Se elimina por este criterio la variable: 'Pago_digital' "
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 5
AICC<-c()
AICC[1]<-aicc(lm(log(Intercambio) ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(log(Intercambio) ~ controles[,-c(i)], datos_int))  
}

min(AICC)<AICC[1]
## [1] TRUE
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 6
AICC<-c()
AICC[1]<-aicc(lm(log(Intercambio) ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(log(Intercambio) ~ controles[,-c(i)], datos_int))  
}

min(AICC)<AICC[1]
## [1] TRUE
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 7
AICC<-c()
AICC[1]<-aicc(lm(log(Intercambio) ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(log(Intercambio) ~ controles[,-c(i)], datos_int))  
}

min(AICC)<AICC[1]
## [1] TRUE
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 8
AICC<-c()
AICC[1]<-aicc(lm(log(Intercambio) ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(log(Intercambio) ~ controles[,-c(i)], datos_int))  
}

min(AICC)<AICC[1]
## [1] FALSE
#Ya no se eliminan columnas
controles1<-controles

#variables a usar
variables_controles
## [1] "Regulacion_intercambio" "Crimen"                 "Cuenta"                
## [4] "Densidad_Pob"           "PIB_pc_PPA"             "ICH"                   
## [7] "Valor_prom"             "Europa"
# Estimación del modelo seleccionado por aicc
modelo_log_int_con_cont_aicc<-lm(log(Intercambio) ~ Regulacion_intercambio + Crimen + 
                                   Cuenta + Densidad_Pob + PIB_pc_PPA + ICH + Valor_prom +
                                   Europa, datos_int)
# Errores robustos
modelo_log_int_con_cont_aicc_corr_hc<-coeftest(modelo_log_int_con_cont_aicc, vcov. = vcovHC(modelo_log_int_con_cont_aicc, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_log_int_con_cont_aicc_corr_hac<-coeftest(modelo_log_int_con_cont_aicc, vcov. = vcovHAC(modelo_log_int_con_cont_aicc, adjust = TRUE, sandwich = TRUE))
# Pronóstico para CR
#Sin regulación
pred_log_int_con_cont_sin_reg_aicc<-exp(predict(modelo_log_int_con_cont_aicc, newdata = datos, interval = "prediction", level = 0.95, type = "response"))[which(datos$Codigo_Pais=="CRI")]
#Con regulación
pred_log_int_con_cont_con_reg_aicc<-exp(predict(modelo_log_int_con_cont_aicc, newdata = data_CR, interval = "prediction", level = 0.95, type = "response"))[which(datos$Codigo_Pais=="CRI")]
# Visualización
stargazer(modelo_log_int_con_cont_aicc, modelo_log_int_con_cont_aicc_corr_hc, type = "html",
          title = "Regresión sobre el logaritmo de la tasa de intercambio según AICc",
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
Regresión sobre el logaritmo de la tasa de intercambio según AICc
Variable dependiente
Tasa intercambio Tasa intercambio
MCO MCO HC
(1) (2)
Regulacion_intercambio -0.789*** -0.789***
(0.063) (0.073)
Crimen -0.018*** -0.018***
(0.005) (0.004)
Cuenta -0.011*** -0.011***
(0.002) (0.002)
Densidad_Pob -0.001*** -0.001***
(0.0002) (0.0001)
PIB_pc_PPA 0.00000 0.00000
(0.00000) (0.00000)
ICH -1.471** -1.471**
(0.654) (0.707)
Valor_prom -0.002 -0.002*
(0.001) (0.001)
Europa -0.763*** -0.763***
(0.075) (0.073)
Constant 2.748*** 2.748***
(0.454) (0.453)
Observations 142
R2 0.792
Adjusted R2 0.779
Residual Std. Error 0.332 (df = 133)
F Statistic 63.250*** (df = 8; 133)
Note: p<0.1; p<0.05; p<0.01

Selección de variables mediante BIC sin efectos fijos de tiempo:

# Selecicón con el criterio BIC
modelo_log_int_con_cont_bic<-lm(log(Intercambio) ~ Regulacion_intercambio + Cajero_Autom + Crimen + Cuenta +
                                   Pago_digital + Debito + Credito + Densidad_Pob + Densidad_Neg + PIB_pc_PPA +
                                   ICH + Valor_prom + Europa + Asia_Este + Am_lat, datos_int)

variables_controles<-c("Regulacion_intercambio", "Cajero_Autom", "Crimen", "Cuenta", "Pago_digital", "Debito",
                       "Credito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH", "Valor_prom", "Europa", 
                       "Asia_Este", "Am_lat")

controles<- datos_int %>% dplyr::select(c(variables_controles)) %>% as.matrix()

#Paso 1
BIC<-c()
BIC[1]<-BIC(modelo_log_int_con_cont_bic)

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(log(Intercambio) ~ controles[,-c(i)], datos_int))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la siguiente variable:
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Debito’”

variables_controles<-variables_controles[-which.min(BIC)]

#Paso 2
BIC<-c()
BIC[1]<-BIC(lm(log(Intercambio) ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(log(Intercambio) ~ controles[,-c(i)], datos_int))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la siguiente variable:
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Am_lat’”

variables_controles<-variables_controles[-which.min(BIC)]

#Paso 3
BIC<-c()
BIC[1]<-BIC(lm(log(Intercambio) ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(log(Intercambio) ~ controles[,-c(i)], datos_int))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la siguiente variable:
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Cajero_Autom’”

variables_controles<-variables_controles[-which.min(BIC)]

#Paso 4
BIC<-c()
BIC[1]<-BIC(lm(log(Intercambio) ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(log(Intercambio) ~ controles[,-c(i)], datos_int))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la siguiente variable:
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Pago_digital’”

variables_controles<-variables_controles[-which.min(BIC)]

#Paso 5
BIC<-c()
BIC[1]<-BIC(lm(log(Intercambio) ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(log(Intercambio) ~ controles[,-c(i)], datos_int))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la siguiente variable:
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Credito’”

variables_controles<-variables_controles[-which.min(BIC)]

#Paso 6
BIC<-c()
BIC[1]<-BIC(lm(log(Intercambio) ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(log(Intercambio) ~ controles[,-c(i)], datos_int))  
}

#El BIC es menor al eliminar la siguiente variable:
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Asia_Este’”

variables_controles<-variables_controles[-which.min(BIC)]

#Paso 7
BIC<-c()
BIC[1]<-BIC(lm(log(Intercambio) ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(log(Intercambio) ~ controles[,-c(i)], datos_int))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la siguiente variable:
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Densidad_Neg’”

variables_controles<-variables_controles[-which.min(BIC)]

#Paso 8
BIC<-c()
BIC[1]<-BIC(lm(log(Intercambio) ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(log(Intercambio) ~ controles[,-c(i)], datos_int))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la siguiente variable:
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))

[1] “Se elimina por este criterio la variable: ‘PIB_pc_PPA’”

variables_controles<-variables_controles[-which.min(BIC)]

#Paso 9
BIC<-c()
BIC[1]<-BIC(lm(log(Intercambio) ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(log(Intercambio) ~ controles[,-c(i)], datos_int))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la siguiente variable:
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Valor_prom’”

variables_controles<-variables_controles[-which.min(BIC)]

#Paso 10
BIC<-c()
BIC[1]<-BIC(lm(log(Intercambio) ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(log(Intercambio) ~ controles[,-c(i)], datos_int))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la siguiente variable:
controles<-controles[,-which.min(BIC)]
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 11
BIC<-c()
BIC[1]<-BIC(lm(log(Intercambio) ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(log(Intercambio) ~ controles[,-c(i)], datos_int))  
}

min(BIC)<BIC[1]

[1] FALSE

#Ya no se eliminan columnas
controles2<-controles

#variables a usar
variables_controles

[1] “Regulacion_intercambio” “Crimen” “Cuenta”
[4] “Densidad_Pob” “Europa”

# Estimación del modelo seleccionado por bic
modelo_log_int_con_cont_bic<-lm(log(Intercambio) ~ Regulacion_intercambio + Crimen + 
                                   Cuenta + Densidad_Pob + Europa, datos_int)
# Error robusto
modelo_log_int_con_cont_bic_corr_hc<-coeftest(modelo_log_int_con_cont_bic, vcov. = vcovHC(modelo_log_int_con_cont_bic, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_log_int_con_cont_bic_corr_hac<-coeftest(modelo_log_int_con_cont_bic, vcov. = vcovHAC(modelo_log_int_con_cont_bic, adjust = TRUE, sandwich = TRUE))
# Pronóstico para CR
#Sin regulación
pred_log_int_con_cont_sin_reg_bic<-exp(predict(modelo_log_int_con_cont_bic, newdata = datos, interval = "prediction", level = 0.95, type = "response"))[which(datos$Codigo_Pais=="CRI")]
#Con regulación
pred_log_int_con_cont_con_reg_bic<-exp(predict(modelo_log_int_con_cont_bic, newdata = data_CR, interval = "prediction", level = 0.95, type = "response"))[which(datos$Codigo_Pais=="CRI")]
# Visualización
stargazer(modelo_log_int_con_cont_bic, modelo_log_int_con_cont_bic_corr_hc, type = "html",
          title = "Regresión sobre el logaritmo de la tasa de intercambio según BIC",
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
Regresión sobre el logaritmo de la tasa de intercambio según BIC
Variable dependiente
Tasa intercambio Tasa intercambio
MCO MCO HC
(1) (2)
Regulacion_intercambio -0.805*** -0.805***
(0.060) (0.063)
Crimen -0.012*** -0.012***
(0.004) (0.004)
Cuenta -0.011*** -0.011***
(0.002) (0.002)
Densidad_Pob -0.001*** -0.001***
(0.0002) (0.0001)
Europa -0.751*** -0.751***
(0.074) (0.069)
Constant 1.696*** 1.696***
(0.162) (0.167)
Observations 142
R2 0.781
Adjusted R2 0.773
Residual Std. Error 0.336 (df = 136)
F Statistic 97.259*** (df = 5; 136)
Note: p<0.1; p<0.05; p<0.01
  • Selección de variables mediante AICc con efectos fijos de tiempo:
#Seleccionar el modelo utilizando el AICc (corrige por tamaño de muestra pequeña), más efectos fijos de tiempo
modelo_log_int_con_cont_aicc_ef<-lm(log(Intercambio) ~ Regulacion_intercambio + Año_2010 + Año_2011 + Año_2012 + Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021  + Año_2022 + Cajero_Autom + Crimen + Cuenta + Pago_digital + Debito + Credito + Densidad_Pob + Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom + Europa + Asia_Este + Am_lat, datos_int)

variables_controles<-c("Regulacion_intercambio", "Año_2010", "Año_2011", "Año_2012", "Año_2013", "Año_2014", "Año_2015", "Año_2016", "Año_2017", "Año_2018", "Año_2019", "Año_2020", "Año_2021", "Año_2022","Cajero_Autom", "Crimen", "Cuenta", "Pago_digital", "Debito", "Credito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH", "Valor_prom", "Europa", "Asia_Este", "Am_lat")

controles<- datos_int %>% dplyr::select(c(variables_controles)) %>% as.matrix()

#Paso 1
AICC<-c()
AICC[1]<-aicc(modelo_log_int_con_cont_aicc_ef)

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(log(Intercambio) ~ controles[,-c(i+13)], datos_int))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc elimina la siguiente variable:
controles<-controles[,-(which.min(AICC)+13)]
print(paste0("Variable eliminada: ",variables_controles[(which.min(AICC)+13)]))

[1] “Variable eliminada: Cajero_Autom”

variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 2
AICC<-c()
AICC[1]<-aicc(lm(log(Intercambio) ~ controles, datos_int))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(log(Intercambio) ~ controles[,-c(i+13)], datos_int))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc elimina la siguiente variable:
controles<-controles[,-(which.min(AICC)+13)]
print(paste0("Variable eliminada: ",variables_controles[(which.min(AICC)+13)]))

[1] “Variable eliminada: Am_lat”

variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 3
AICC<-c()
AICC[1]<-aicc(lm(log(Intercambio) ~ controles, datos_int))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(log(Intercambio) ~ controles[,-c(i+13)], datos_int))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc elimina la siguiente variable:
controles<-controles[,-(which.min(AICC)+13)]
print(paste0("Variable eliminada: ",variables_controles[(which.min(AICC)+13)]))

[1] “Variable eliminada: Credito”

variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 4
AICC<-c()
AICC[1]<-aicc(lm(log(Intercambio) ~ controles, datos_int))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(log(Intercambio) ~ controles[,-c(i+13)], datos_int))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc elimina la siguiente variable:
controles<-controles[,-(which.min(AICC)+13)]
print(paste0("Variable eliminada: ",variables_controles[(which.min(AICC)+13)]))

[1] “Variable eliminada: Debito”

variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 5
AICC<-c()
AICC[1]<-aicc(lm(log(Intercambio) ~ controles, datos_int))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(log(Intercambio) ~ controles[,-c(i+13)], datos_int))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc elimina la siguiente variable:
controles<-controles[,-(which.min(AICC)+13)]
print(paste0("Variable eliminada: ",variables_controles[(which.min(AICC)+13)]))

[1] “Variable eliminada: Pago_digital”

variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 6
AICC<-c()
AICC[1]<-aicc(lm(log(Intercambio) ~ controles, datos_int))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(log(Intercambio) ~ controles[,-c(i+13)], datos_int))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc elimina la siguiente variable:
controles<-controles[,-(which.min(AICC)+13)]
print(paste0("Variable eliminada: ",variables_controles[(which.min(AICC)+13)]))

[1] “Variable eliminada: Densidad_Neg”

variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 7
AICC<-c()
AICC[1]<-aicc(lm(log(Intercambio) ~ controles, datos_int))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(log(Intercambio) ~ controles[,-c(i+13)], datos_int))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc elimina la siguiente variable:
controles<-controles[,-(which.min(AICC)+13)]
print(paste0("Variable eliminada: ",variables_controles[(which.min(AICC)+13)]))

[1] “Variable eliminada: Asia_Este”

variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 8
AICC<-c()
AICC[1]<-aicc(lm(log(Intercambio) ~ controles, datos_int))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(log(Intercambio) ~ controles[,-c(i+13)], datos_int))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc elimina la siguiente variable:
controles<-controles[,-(which.min(AICC)+13)]
print(paste0("Variable eliminada: ",variables_controles[(which.min(AICC)+13)]))

[1] “Variable eliminada: Valor_prom”

variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 9
AICC<-c()
AICC[1]<-aicc(lm(log(Intercambio) ~ controles, datos_int))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(log(Intercambio) ~ controles[,-c(i+13)], datos_int))  
}

min(AICC)<AICC[1]

[1] FALSE

#Ya no se eliminan columnas
controles3<-controles
# Variables seleccionadas
variables_controles

[1] “Regulacion_intercambio” “Año_2010” “Año_2011”
[4] “Año_2012” “Año_2013” “Año_2014”
[7] “Año_2015” “Año_2016” “Año_2017”
[10] “Año_2018” “Año_2019” “Año_2020”
[13] “Año_2021” “Año_2022” “Crimen”
[16] “Cuenta” “Densidad_Pob” “PIB_pc_PPA”
[19] “ICH” “Europa”

# Se omiten los años 2010 al 2012 por colinealidad.
modelo_log_int_con_cont_aicc_ef<-lm(log(Intercambio) ~ Regulacion_intercambio + Año_2013 + Año_2014 +
                                      Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 +
                                      Año_2021 + Año_2022 + Crimen + Cuenta + Densidad_Pob + PIB_pc_PPA + 
                                      ICH + Europa, datos_int)
# Errores robustos
modelo_log_int_con_cont_aicc_ef_corr_hc<-coeftest(modelo_log_int_con_cont_aicc_ef, vcov. = vcovHC(modelo_log_int_con_cont_aicc_ef, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_log_int_con_cont_aicc_ef_corr_hac<-coeftest(modelo_log_int_con_cont_aicc_ef, vcov. = vcovHAC(modelo_log_int_con_cont_aicc_ef, adjust = TRUE, sandwich = TRUE))

# Pronóstico para CR
#Sin regulación
pred_log_int_con_cont_sin_reg_aicc_ef<-exp(predict(modelo_log_int_con_cont_aicc_ef, newdata = datos, interval = "prediction", level = 0.95, type = "response"))[which(datos$Codigo_Pais=="CRI")]
#Con regulación
pred_log_int_con_cont_con_reg_aicc_ef<-exp(predict(modelo_log_int_con_cont_aicc_ef, newdata = data_CR, interval = "prediction", level = 0.95, type = "response"))[which(datos$Codigo_Pais=="CRI")]
# Visualización
stargazer(modelo_log_int_con_cont_aicc_ef, modelo_log_int_con_cont_aicc_ef_corr_hc, type = "html", 
          title = "Regresión sobre el logaritmo de la tasa de Intercambio según AICc con efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa Intercambio", "Tasa Intercambio"), dep.var.caption = "Variable dependiente")
Regresión sobre el logaritmo de la tasa de Intercambio según AICc con efectos fijos de tiempo
Variable dependiente
Tasa Intercambio Tasa Intercambio
MCO MCO HC
(1) (2)
Regulacion_intercambio -0.629*** -0.629***
(0.084) (0.096)
Año_2013 0.152 0.152
(0.170) (0.193)
Año_2014 0.080 0.080
(0.184) (0.215)
Año_2016 -0.067 -0.067
(0.178) (0.149)
Año_2017 -0.194 -0.194
(0.150) (0.158)
Año_2018 0.0004 0.0004
(0.168) (0.154)
Año_2019 -0.001 -0.001
(0.162) (0.164)
Año_2020 0.129 0.129
(0.160) (0.155)
Año_2021 0.060 0.060
(0.171) (0.183)
Año_2022 -0.066 -0.066
(0.215) (0.245)
Crimen -0.013*** -0.013***
(0.005) (0.004)
Cuenta -0.012*** -0.012***
(0.002) (0.002)
Densidad_Pob -0.001*** -0.001***
(0.0002) (0.0001)
PIB_pc_PPA 0.00000 0.00000
(0.00000) (0.00000)
ICH -1.011 -1.011
(0.642) (0.697)
Europa -0.706*** -0.706***
(0.081) (0.091)
Constant 2.226*** 2.226***
(0.375) (0.390)
Observations 142
R2 0.811
Adjusted R2 0.787
Residual Std. Error 0.326 (df = 125)
F Statistic 33.594*** (df = 16; 125)
Note: p<0.1; p<0.05; p<0.01
  • Selección de variables mediante BIC con efectos fijos de tiempo:
#Seleccionar el modelo utilizando el BIC, más efectos fijos de tiempo
modelo_log_int_con_cont_bic_ef<-lm(log(Intercambio) ~ Regulacion_intercambio + Año_2010 + Año_2011 + Año_2012 +
                                     Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + Año_2019 + 
                                     Año_2020 + Año_2021 + Año_2022 + Cajero_Autom + Crimen + Cuenta +
                                     Pago_digital + Debito + Credito + Densidad_Pob + Densidad_Neg + PIB_pc_PPA +
                                     ICH + Valor_prom + Europa + Asia_Este + Am_lat, datos_int)

variables_controles<-c("Regulacion_intercambio", "Año_2010", "Año_2011", "Año_2012", "Año_2013", "Año_2014", 
                       "Año_2015", "Año_2016", "Año_2017", "Año_2018", "Año_2019", "Año_2020", "Año_2021", "Año_2022",
                       "Cajero_Autom", "Crimen", "Cuenta", "Pago_digital", "Debito", "Credito", "Densidad_Pob", 
                       "Densidad_Neg", "PIB_pc_PPA", "ICH", "Valor_prom", "Europa", "Asia_Este", "Am_lat")

controles<- datos_int %>% dplyr::select(c(variables_controles)) %>% as.matrix()

#Paso 1
BIC<-c()
BIC[1]<-BIC(modelo_log_int_con_cont_bic_ef)

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(log(Intercambio) ~ controles[,-c(i+13)], datos_int))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC elimina la siguiente variable
controles<-controles[,-(which.min(BIC)+13)]
print(paste0("Variable eliminada: ",variables_controles[(which.min(AICC)+14)]))

[1] “Variable eliminada: Cajero_Autom”

variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 2
BIC<-c()
BIC[1]<-BIC(lm(log(Intercambio) ~ controles, datos_int))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(log(Intercambio) ~ controles[,-c(i+13)], datos_int))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC elimina la siguiente variable
controles<-controles[,-(which.min(BIC)+13)]
print(paste0("Variable eliminada: ",variables_controles[(which.min(AICC)+14)]))

[1] “Variable eliminada: Crimen”

variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 3
BIC<-c()
BIC[1]<-BIC(lm(log(Intercambio) ~ controles, datos_int))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(log(Intercambio) ~ controles[,-c(i+13)], datos_int))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC elimina la siguiente variable
controles<-controles[,-(which.min(BIC)+13)]
print(paste0("Variable eliminada: ",variables_controles[(which.min(AICC)+14)]))

[1] “Variable eliminada: Crimen”

variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 4
BIC<-c()
BIC[1]<-BIC(lm(log(Intercambio) ~ controles, datos_int))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(log(Intercambio) ~ controles[,-c(i+13)], datos_int))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la columna 15
controles<-controles[,-(which.min(BIC)+13)]
print(paste0("Variable eliminada: ",variables_controles[(which.min(AICC)+14)]))

[1] “Variable eliminada: Crimen”

variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 5
BIC<-c()
BIC[1]<-BIC(lm(log(Intercambio) ~ controles, datos_int))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(log(Intercambio) ~ controles[,-c(i+13)], datos_int))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC elimina la siguiente variable
controles<-controles[,-(which.min(BIC)+13)]
print(paste0("Variable eliminada: ",variables_controles[(which.min(AICC)+14)]))

[1] “Variable eliminada: Crimen”

variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 6
BIC<-c()
BIC[1]<-BIC(lm(log(Intercambio) ~ controles, datos_int))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(log(Intercambio) ~ controles[,-c(i+13)], datos_int))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC elimina la siguiente variable
controles<-controles[,-(which.min(BIC)+13)]
print(paste0("Variable eliminada: ",variables_controles[(which.min(AICC)+14)]))

[1] “Variable eliminada: Crimen”

variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 7
BIC<-c()
BIC[1]<-BIC(lm(log(Intercambio) ~ controles, datos_int))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(log(Intercambio) ~ controles[,-c(i+13)], datos_int))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC elimina la siguiente variable
controles<-controles[,-(which.min(BIC)+13)]
print(paste0("Variable eliminada: ",variables_controles[(which.min(AICC)+14)]))

[1] “Variable eliminada: Crimen”

variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 8
BIC<-c()
BIC[1]<-BIC(lm(log(Intercambio) ~ controles, datos_int))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(log(Intercambio) ~ controles[,-c(i+13)], datos_int))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC elimina la siguiente variable
controles<-controles[,-(which.min(BIC)+13)]
print(paste0("Variable eliminada: ",variables_controles[(which.min(AICC)+14)]))

[1] “Variable eliminada: Crimen”

variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 9
BIC<-c()
BIC[1]<-BIC(lm(log(Intercambio) ~ controles, datos_int))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(log(Intercambio) ~ controles[,-c(i+13)], datos_int))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC elimina la siguiente variable
controles<-controles[,-(which.min(BIC)+13)]
print(paste0("Variable eliminada: ",variables_controles[(which.min(AICC)+14)]))

[1] “Variable eliminada: Crimen”

variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 10
BIC<-c()
BIC[1]<-BIC(lm(log(Intercambio) ~ controles, datos_int))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(log(Intercambio) ~ controles[,-c(i+13)], datos_int))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC elimina la siguiente variable
controles<-controles[,-(which.min(BIC)+13)]
print(paste0("Variable eliminada: ",variables_controles[(which.min(AICC)+14)]))

[1] “Variable eliminada: Crimen”

variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 11
BIC<-c()
BIC[1]<-BIC(lm(log(Intercambio) ~ controles, datos_int))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(log(Intercambio) ~ controles[,-c(i+13)], datos_int))  
}

min(BIC)<BIC[1]

[1] FALSE

#No se eliminan más columnas
controles4<-controles

#Variables a usar
variables_controles

[1] “Regulacion_intercambio” “Año_2010” “Año_2011”
[4] “Año_2012” “Año_2013” “Año_2014”
[7] “Año_2015” “Año_2016” “Año_2017”
[10] “Año_2018” “Año_2019” “Año_2020”
[13] “Año_2021” “Año_2022” “Crimen”
[16] “Cuenta” “Densidad_Pob” “Europa”

# Se omiten los años 2010 al 2012 y 2015 por colinealidad.
modelo_log_int_con_cont_bic_ef<-lm(log(Intercambio) ~ Regulacion_intercambio + Año_2013 + Año_2014 +
                                      Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 + 
                                     Año_2022 + Crimen + Cuenta + Densidad_Pob + Europa, datos_int)
# Errores robustos
modelo_log_int_con_cont_bic_ef_corr_hc<-coeftest(modelo_log_int_con_cont_bic_ef, vcov. = vcovHC(modelo_log_int_con_cont_bic_ef, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_log_int_con_cont_bic_ef_corr_hac<-coeftest(modelo_log_int_con_cont_bic_ef, vcov. = vcovHAC(modelo_log_int_con_cont_bic_ef, adjust = TRUE, sandwich = TRUE))
# Pronóstico para CR
#Sin regulación
pred_log_int_con_cont_sin_reg_bic_ef<-exp(predict(modelo_log_int_con_cont_bic_ef, newdata = datos, interval = "prediction", level = 0.95, type = "response"))[which(datos$Codigo_Pais=="CRI")]
#Con regulación
pred_log_int_con_cont_con_reg_bic_ef<-exp(predict(modelo_log_int_con_cont_bic_ef, newdata = data_CR, interval = "prediction", level = 0.95, type = "response"))[which(datos$Codigo_Pais=="CRI")]
# Visualización
stargazer(modelo_log_int_con_cont_bic_ef, modelo_log_int_con_cont_bic_ef_corr_hc, type = "html", 
          title = "Regresión sobre el logaritmo de la tasa de Intercambio según BIC con efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa Intercambio", "Tasa Intercambio"), dep.var.caption = "Variable dependiente")
Regresión sobre el logaritmo de la tasa de Intercambio según BIC con efectos fijos de tiempo
Variable dependiente
Tasa Intercambio Tasa Intercambio
MCO MCO HC
(1) (2)
Regulacion_intercambio -0.646*** -0.646***
(0.078) (0.081)
Año_2013 0.100 0.100
(0.166) (0.184)
Año_2014 0.076 0.076
(0.185) (0.219)
Año_2016 -0.102 -0.102
(0.178) (0.150)
Año_2017 -0.240 -0.240
(0.148) (0.158)
Año_2018 -0.043 -0.043
(0.167) (0.158)
Año_2019 -0.039 -0.039
(0.162) (0.169)
Año_2020 0.082 0.082
(0.160) (0.163)
Año_2021 0.011 0.011
(0.170) (0.189)
Año_2022 -0.102 -0.102
(0.215) (0.244)
Crimen -0.011** -0.011**
(0.004) (0.004)
Cuenta -0.012*** -0.012***
(0.002) (0.002)
Densidad_Pob -0.001*** -0.001***
(0.0002) (0.0001)
Europa -0.709*** -0.709***
(0.082) (0.090)
Constant 1.710*** 1.710***
(0.201) (0.206)
Observations 142
R2 0.806
Adjusted R2 0.784
Residual Std. Error 0.328 (df = 127)
F Statistic 37.601*** (df = 14; 127)
Note: p<0.1; p<0.05; p<0.01

2.4 Inclusión de efectos no lineales en la regresión

  • Selección de variables mediante AICc sin efectos fijos de tiempo:
# creación de variables cuadráticas:
datos_int2<-datos_int %>% mutate(
  Cajero_Autom_sqrt = Cajero_Autom**2, 
  Crimen_sqrt = Crimen**2, 
  Cuenta_sqrt = Cuenta**2, 
  Credito_sqrt = Credito**2, 
  Debito_sqrt = Debito**2, 
  Densidad_Pob_sqrt = Densidad_Pob**2, 
  Densidad_Neg_sqrt = Densidad_Neg**2, 
  PIB_pc_PPA_sqrt = PIB_pc_PPA**2, 
  ICH_sqrt = ICH**2, 
  Pago_digital_sqrt = Pago_digital**2, 
  Valor_prom_sqr = Valor_prom**2
)
# Selección variables con AICC:  ----
modelo_int_nolineal_con_cont_aicc<-lm(formula = Intercambio ~ Regulacion_intercambio + Cajero_Autom + 
                                        Crimen + Cuenta + Pago_digital + Debito + Credito + Densidad_Pob +
                                        Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom + Europa + Asia_Este +
                                        Am_lat + Cajero_Autom_sqrt + Crimen_sqrt + Cuenta_sqrt +
                                        Credito_sqrt + Debito_sqrt + Densidad_Pob_sqrt + 
                                        Densidad_Neg_sqrt + PIB_pc_PPA_sqrt + ICH_sqrt + 
                                        Pago_digital_sqrt + Valor_prom_sqr, data= datos_int2)

variables_controles<-c("Regulacion_intercambio", "Cajero_Autom", "Crimen", "Cuenta", "Pago_digital",
                       "Debito", "Credito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH",
                       "Valor_prom", "Europa", "Asia_Este", "Am_lat", "Cajero_Autom_sqrt", "Crimen_sqrt",
                       "Cuenta_sqrt", "Credito_sqrt", "Debito_sqrt","Densidad_Pob_sqrt",
                       "Densidad_Neg_sqrt", "PIB_pc_PPA_sqrt", "ICH_sqrt", "Pago_digital_sqrt",
                       "Valor_prom_sqr")

controles<- datos_int2 %>% dplyr::select(c(variables_controles)) %>% as.matrix()

#Paso 1
AICC<-c()
AICC[1]<-aicc(modelo_int_nolineal_con_cont_aicc)

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int2))  
}

min(AICC)<AICC[1]
## [1] TRUE
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
## [1] "Se elimina por este criterio la variable: 'Densidad_Pob_sqrt' "
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 2
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int2))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int2))  
}

min(AICC)<AICC[1]
## [1] TRUE
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
## [1] "Se elimina por este criterio la variable: 'Valor_prom_sqr' "
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 3
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int2))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int2))  
}

min(AICC)<AICC[1]
## [1] TRUE
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
## [1] "Se elimina por este criterio la variable: 'Asia_Este' "
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 4
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int2))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int2))  
}

min(AICC)<AICC[1]
## [1] TRUE
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
## [1] "Se elimina por este criterio la variable: 'Crimen_sqrt' "
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 5
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int2))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int2))  
}

min(AICC)<AICC[1]
## [1] TRUE
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
## [1] "Se elimina por este criterio la variable: 'Cajero_Autom' "
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 6
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int2))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int2))  
}

min(AICC)<AICC[1]
## [1] TRUE
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
## [1] "Se elimina por este criterio la variable: 'PIB_pc_PPA_sqrt' "
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 7
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int2))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int2))  
}

min(AICC)<AICC[1]
## [1] TRUE
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
## [1] "Se elimina por este criterio la variable: 'Debito_sqrt' "
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 8
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int2))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int2))  
}

min(AICC)<AICC[1]
## [1] TRUE
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
## [1] "Se elimina por este criterio la variable: 'Debito' "
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 9
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int2))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int2))  
}

min(AICC)<AICC[1]
## [1] TRUE
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
## [1] "Se elimina por este criterio la variable: 'PIB_pc_PPA' "
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 10
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int2))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int2))  
}

min(AICC)<AICC[1]
## [1] TRUE
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
## [1] "Se elimina por este criterio la variable: 'Cajero_Autom_sqrt' "
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 11
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int2))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int2))  
}

min(AICC)<AICC[1]
## [1] TRUE
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
## [1] "Se elimina por este criterio la variable: 'Pago_digital' "
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 12
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int2))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int2))  
}

min(AICC)<AICC[1]
## [1] TRUE
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
## [1] "Se elimina por este criterio la variable: 'Pago_digital_sqrt' "
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 13
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int2))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int2))  
}

min(AICC)<AICC[1]
## [1] TRUE
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
## [1] "Se elimina por este criterio la variable: 'Densidad_Neg_sqrt' "
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 14
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int2))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int2))  
}

min(AICC)<AICC[1]
## [1] TRUE
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
## [1] "Se elimina por este criterio la variable: 'Densidad_Neg' "
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 15
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int2))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int2))  
}

min(AICC)<AICC[1]
## [1] FALSE
# El AICC ya no es menor, entonces no se eliminan columnas
controles1<-controles

# Deja las siguiente variables:
variables_controles
##  [1] "Regulacion_intercambio" "Crimen"                 "Cuenta"                
##  [4] "Credito"                "Densidad_Pob"           "ICH"                   
##  [7] "Valor_prom"             "Europa"                 "Am_lat"                
## [10] "Cuenta_sqrt"            "Credito_sqrt"           "ICH_sqrt"
# creación de variables cuadráticas:
datos<-datos %>% mutate(
  Cajero_Autom_sqrt = Cajero_Autom**2, 
  Crimen_sqrt = Crimen**2, 
  Cuenta_sqrt = Cuenta**2, 
  Credito_sqrt = Credito**2, 
  Debito_sqrt = Debito**2, 
  Densidad_Pob_sqrt = Densidad_Pob**2, 
  Densidad_Neg_sqrt = Densidad_Neg**2, 
  PIB_pc_PPA_sqrt = PIB_pc_PPA**2, 
  ICH_sqrt = ICH**2, 
  Pago_digital_sqrt = Pago_digital**2, 
  Valor_prom_sqr = Valor_prom**2
)
# Estimación del modelo
modelo_int_nolineal_con_cont_aicc<-lm(formula = Intercambio ~ Regulacion_intercambio + Crimen + Cuenta +
                                        Credito + Densidad_Pob + ICH + Valor_prom + Europa + Am_lat +
                                        Cuenta_sqrt + Credito_sqrt + ICH_sqrt, data= datos_int2)
# Errores robustos
modelo_int_nolineal_con_cont_aicc_corr_hc<-coeftest(modelo_int_nolineal_con_cont_aicc, 
                                                    vcov. = vcovHC(modelo_int_nolineal_con_cont_aicc, 
                                                                   "HC1", adjust = TRUE, sandwich = TRUE))

modelo_int_nolineal_con_cont_aicc_corr_hac<-coeftest(modelo_int_nolineal_con_cont_aicc,
                                                     vcov. = vcovHAC(modelo_int_nolineal_con_cont_aicc, 
                                                     adjust = TRUE, sandwich = TRUE))
# Pronóstico
# Sin regulación
pred_int_nolineal_sin_reg_aicc <-predict(modelo_int_nolineal_con_cont_aicc, newdata = datos, 
                                         interval = "prediction", level = 0.95, 
                                         type = "response")[which(datos$Codigo_Pais=="CRI")]
#Con regulación
# Se le agrega a CR la adquirencia
data_CR<-datos
data_CR[ which(datos$Codigo_Pais=="CRI"), which(names(datos)=="Regulacion_intercambio") ]<-1

pred_int_nolineal_con_reg_aicc<-predict(modelo_int_nolineal_con_cont_aicc, newdata = data_CR, 
                                        interval = "prediction", level = 0.95, 
                                        type = "response")[which(data_CR$Codigo_Pais=="CRI")]
# Visualización
stargazer(modelo_int_nolineal_con_cont_aicc, modelo_int_nolineal_con_cont_aicc_corr_hc,
          type = "html", 
          title = "Regresión no lineal sobre la tasa de intercambio con todos los controles seleccionados mediante el AICc", 
          column.labels = c("MCO","MCO HC"), model.names = F,
          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
Regresión no lineal sobre la tasa de intercambio con todos los controles seleccionados mediante el AICc
Variable dependiente
Tasa intercambio Tasa intercambio
MCO MCO HC
(1) (2)
Regulacion_intercambio -0.600*** -0.600***
(0.050) (0.058)
Crimen -0.030*** -0.030***
(0.005) (0.004)
Cuenta -0.033*** -0.033***
(0.011) (0.008)
Credito 0.016** 0.016*
(0.007) (0.009)
Densidad_Pob -0.0004*** -0.0004***
(0.0001) (0.0001)
ICH -15.197*** -15.197***
(4.730) (4.737)
Valor_prom -0.001 -0.001*
(0.001) (0.001)
Europa -0.471*** -0.471***
(0.079) (0.058)
Am_lat 0.258* 0.258*
(0.132) (0.135)
Cuenta_sqrt 0.0001* 0.0001*
(0.0001) (0.0001)
Credito_sqrt -0.0002** -0.0002
(0.0001) (0.0001)
ICH_sqrt 9.852*** 9.852***
(3.587) (3.578)
Constant 8.998*** 8.998***
(1.569) (1.584)
Observations 142
R2 0.839
Adjusted R2 0.824
Residual Std. Error 0.258 (df = 129)
F Statistic 56.031*** (df = 12; 129)
Note: p<0.1; p<0.05; p<0.01
  • Selección de variables mediante BIC sin efectos fijos de tiempo:
#Modelo con controles y sin efectos del tiempo:
# BIC
# creación de variables cuadráticas:
datos_int2<-datos_int %>% mutate(
  Cajero_Autom_sqrt = Cajero_Autom**2, 
  Crimen_sqrt = Crimen**2, 
  Cuenta_sqrt = Cuenta**2, 
  Credito_sqrt = Credito**2, 
  Debito_sqrt = Debito**2, 
  Densidad_Pob_sqrt = Densidad_Pob**2, 
  Densidad_Neg_sqrt = Densidad_Neg**2, 
  PIB_pc_PPA_sqrt = PIB_pc_PPA**2, 
  ICH_sqrt = ICH**2, 
  Pago_digital_sqrt = Pago_digital**2, 
  Valor_prom_sqr = Valor_prom**2
)
# Selección variables con BIC
modelo_int_nolineal_con_cont_bic<-lm(formula = Intercambio ~ Regulacion_intercambio + Cajero_Autom + 
                                        Crimen + Cuenta + Pago_digital + Debito + Credito + Densidad_Pob +
                                        Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom + Europa + Asia_Este +
                                        Am_lat + Cajero_Autom_sqrt + Crimen_sqrt + Cuenta_sqrt +
                                        Credito_sqrt + Debito_sqrt + Densidad_Pob_sqrt + 
                                        Densidad_Neg_sqrt + PIB_pc_PPA_sqrt + ICH_sqrt + 
                                        Pago_digital_sqrt + Valor_prom_sqr, data= datos_int2)

variables_controles<-c("Regulacion_intercambio", "Cajero_Autom", "Crimen", "Cuenta", "Pago_digital",
                       "Debito", "Credito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH",
                       "Valor_prom", "Europa", "Asia_Este", "Am_lat", "Cajero_Autom_sqrt", "Crimen_sqrt",
                       "Cuenta_sqrt", "Credito_sqrt", "Debito_sqrt","Densidad_Pob_sqrt",
                       "Densidad_Neg_sqrt", "PIB_pc_PPA_sqrt", "ICH_sqrt", "Pago_digital_sqrt",
                       "Valor_prom_sqr")

controles<- datos_int2 %>% dplyr::select(c(variables_controles)) %>% as.matrix()


#Paso 1
BIC<-c()
BIC[1]<-BIC(modelo_int_nolineal_con_cont_bic)

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int2))  
}

min(BIC)<BIC[1]
## [1] TRUE
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
## [1] "Se elimina por este criterio la variable: 'Densidad_Pob_sqrt' "
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 2
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int2))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int2))  
}

min(BIC)<BIC[1]
## [1] TRUE
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
## [1] "Se elimina por este criterio la variable: 'Valor_prom_sqr' "
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 3
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int2))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int2))  
}

min(BIC)<BIC[1]
## [1] TRUE
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
## [1] "Se elimina por este criterio la variable: 'Asia_Este' "
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 4
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int2))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int2))  
}

min(BIC)<BIC[1]
## [1] TRUE
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
## [1] "Se elimina por este criterio la variable: 'Crimen_sqrt' "
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 5
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int2))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int2))  
}

min(BIC)<BIC[1]
## [1] TRUE
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
## [1] "Se elimina por este criterio la variable: 'Cajero_Autom' "
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 6
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int2))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int2))  
}

min(BIC)<BIC[1]
## [1] TRUE
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
## [1] "Se elimina por este criterio la variable: 'PIB_pc_PPA_sqrt' "
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 7
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int2))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int2))  
}

min(BIC)<BIC[1]
## [1] TRUE
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
## [1] "Se elimina por este criterio la variable: 'Debito_sqrt' "
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 8
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int2))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int2))  
}

min(BIC)<BIC[1]
## [1] TRUE
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
## [1] "Se elimina por este criterio la variable: 'Debito' "
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 9
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int2))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int2))  
}

min(BIC)<BIC[1]
## [1] TRUE
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
## [1] "Se elimina por este criterio la variable: 'PIB_pc_PPA' "
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 10
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int2))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int2))  
}

min(BIC)<BIC[1]
## [1] TRUE
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
## [1] "Se elimina por este criterio la variable: 'Cajero_Autom_sqrt' "
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 11
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int2))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int2))  
}

min(BIC)<BIC[1]
## [1] TRUE
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
## [1] "Se elimina por este criterio la variable: 'Pago_digital' "
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 12
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int2))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int2))  
}

min(BIC)<BIC[1]
## [1] TRUE
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
## [1] "Se elimina por este criterio la variable: 'Pago_digital_sqrt' "
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 13
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int2))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int2))  
}

min(BIC)<BIC[1]
## [1] TRUE
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
## [1] "Se elimina por este criterio la variable: 'Densidad_Neg_sqrt' "
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 14
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int2))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int2))  
}

min(BIC)<BIC[1]
## [1] TRUE
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
## [1] "Se elimina por este criterio la variable: 'Densidad_Neg' "
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 15
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int2))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int2))  
}

min(BIC)<BIC[1]
## [1] TRUE
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
## [1] "Se elimina por este criterio la variable: 'Valor_prom' "
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 16
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int2))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int2))  
}

min(BIC)<BIC[1]
## [1] TRUE
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
## [1] "Se elimina por este criterio la variable: 'Cuenta_sqrt' "
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 17
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int2))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int2))  
}

min(BIC)<BIC[1]
## [1] TRUE
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
## [1] "Se elimina por este criterio la variable: 'Credito_sqrt' "
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 18
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int2))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int2))  
}

min(BIC)<BIC[1]
## [1] TRUE
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
## [1] "Se elimina por este criterio la variable: 'Credito' "
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 19
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int2))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int2))  
}

min(BIC)<BIC[1]
## [1] FALSE
# El BIC ya no es menor, entonces no se eliminan columnas
controles1<-controles

# Deja las siguiente variables:
variables_controles
## [1] "Regulacion_intercambio" "Crimen"                 "Cuenta"                
## [4] "Densidad_Pob"           "ICH"                    "Europa"                
## [7] "Am_lat"                 "ICH_sqrt"
# Estimación del modelo seleccinado
modelo_int_nolineal_con_cont_bic=lm(formula = Intercambio ~ Regulacion_intercambio + Crimen + Cuenta + Densidad_Pob + ICH + Europa + Am_lat + ICH_sqrt, data = datos_int2)

# Errores robustos
modelo_int_nolineal_con_cont_bic_corr_hc<-coeftest(modelo_int_nolineal_con_cont_bic, 
                                                    vcov. = vcovHC(modelo_int_nolineal_con_cont_bic, 
                                                                   "HC1", adjust = TRUE, sandwich = TRUE))
modelo_int_nolineal_con_cont_bic_corr_hac<-coeftest(modelo_int_nolineal_con_cont_bic,
                                                     vcov. = vcovHAC(modelo_int_nolineal_con_cont_bic, 
                                                     adjust = TRUE, sandwich = TRUE))
# Pronóstico CR
# creación de variables cuadráticas:
datos<-datos %>% mutate(
  Cajero_Autom_sqrt = Cajero_Autom**2, 
  Crimen_sqrt = Crimen**2, 
  Cuenta_sqrt = Cuenta**2, 
  Credito_sqrt = Credito**2, 
  Debito_sqrt = Debito**2, 
  Densidad_Pob_sqrt = Densidad_Pob**2, 
  Densidad_Neg_sqrt = Densidad_Neg**2, 
  PIB_pc_PPA_sqrt = PIB_pc_PPA**2, 
  ICH_sqrt = ICH**2, 
  Pago_digital_sqrt = Pago_digital**2, 
  Valor_prom_sqr = Valor_prom**2
)
#Sin regulación
pred_int_nolineal_sin_reg_con_cont_bic<-predict(modelo_int_nolineal_con_cont_bic, newdata = datos, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
#Con regulación
# Se le agrega a CR la adquirencia
data_CR<-datos
data_CR[ which(datos$Codigo_Pais=="CRI"), which(names(datos)=="Regulacion_intercambio") ]<-1

pred_int_nolineal_con_reg_con_cont_bic<-predict(modelo_int_nolineal_con_cont_bic, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
# Visualización
stargazer(modelo_int_nolineal_con_cont_bic,modelo_int_nolineal_con_cont_bic_corr_hc,
      type = "html", 
      title = "Regresión no lineal sobre la tasa de intercambio con todos los controles seleccionados mediante el BIC", 
      column.labels = c("MCO","MCO HC"), model.names = F,
      dep.var.labels = c("Tasa intercambio","Tasa intercambio"), 
      dep.var.caption = "Variable dependiente")
Regresión no lineal sobre la tasa de intercambio con todos los controles seleccionados mediante el BIC
Variable dependiente
Tasa intercambio Tasa intercambio
MCO MCO HC
(1) (2)
Regulacion_intercambio -0.586*** -0.586***
(0.051) (0.060)
Crimen -0.030*** -0.030***
(0.005) (0.004)
Cuenta -0.010*** -0.010***
(0.002) (0.002)
Densidad_Pob -0.0004*** -0.0004***
(0.0001) (0.0001)
ICH -19.254*** -19.254***
(4.698) (4.340)
Europa -0.413*** -0.413***
(0.070) (0.059)
Am_lat 0.474*** 0.474***
(0.114) (0.100)
ICH_sqrt 13.521*** 13.521***
(3.496) (3.270)
Constant 9.232*** 9.232***
(1.587) (1.444)
Observations 142
R2 0.824
Adjusted R2 0.814
Residual Std. Error 0.266 (df = 133)
F Statistic 78.055*** (df = 8; 133)
Note: p<0.1; p<0.05; p<0.01
  • Selección de variables mediante AICc con efectos fijos de tiempo:
# Selección variables con AICC:  
modelo_int_nolineal_con_cont_ef_aicc<-lm(formula = Intercambio ~ Regulacion_intercambio + Año_2010 + Año_2011 + 
                                           Año_2012 + Año_2013 + Año_2014 + Año_2015 + 
                                           Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 + 
                                           Año_2022 + Cajero_Autom + Crimen + Cuenta +
                                           Pago_digital + Debito + Credito + Densidad_Pob + Densidad_Neg + PIB_pc_PPA +
                                           ICH + Valor_prom + Europa + Asia_Este + Am_lat +
                                           Cajero_Autom_sqrt + Crimen_sqrt + Cuenta_sqrt + Credito_sqrt + Debito_sqrt + 
                                           Densidad_Pob_sqrt + Densidad_Neg_sqrt + PIB_pc_PPA_sqrt + ICH_sqrt + Pago_digital_sqrt + 
                                           Valor_prom_sqr, data= datos_int2)

variables_controles<-c("Regulacion_intercambio", "Año_2010", "Año_2011", "Año_2012", "Año_2013", "Año_2014", "Año_2015",
                       "Año_2016", "Año_2017", "Año_2018", "Año_2019", "Año_2020", "Año_2021", "Año_2022", "Cajero_Autom", 
                       "Crimen", "Cuenta", "Pago_digital", "Debito", "Credito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", 
                       "ICH", "Valor_prom", "Europa", "Asia_Este", "Am_lat", "Cajero_Autom_sqrt", "Crimen_sqrt", "Cuenta_sqrt", 
                       "Credito_sqrt", "Debito_sqrt", "Densidad_Pob_sqrt", "Densidad_Neg_sqrt", "PIB_pc_PPA_sqrt", "ICH_sqrt", 
                       "Pago_digital_sqrt", "Valor_prom_sqr")

controles<- datos_int2 %>% dplyr::select(c(variables_controles)) %>% as.matrix()


#Paso 1
AICC<-c()
AICC[1]<-aicc(modelo_int_nolineal_con_cont_ef_aicc)

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+13)], datos_int2))  
}

min(AICC)<AICC[1]
## [1] TRUE
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+13],"' "))
## [1] "Se elimina por este criterio la variable: 'Densidad_Pob_sqrt' "
variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 2
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int2))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+13)], datos_int2))  
}

min(AICC)<AICC[1]
## [1] TRUE
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+13],"' "))
## [1] "Se elimina por este criterio la variable: 'Crimen_sqrt' "
variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 3
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int2))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+13)], datos_int2))  
}

min(AICC)<AICC[1]
## [1] TRUE
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+13],"' "))
## [1] "Se elimina por este criterio la variable: 'Cajero_Autom' "
variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 4
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int2))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+13)], datos_int2))  
}

min(AICC)<AICC[1]
## [1] TRUE
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+13],"' "))
## [1] "Se elimina por este criterio la variable: 'Am_lat' "
variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 5
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int2))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+13)], datos_int2))  
}

min(AICC)<AICC[1]
## [1] TRUE
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+13],"' "))
## [1] "Se elimina por este criterio la variable: 'Debito_sqrt' "
variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 6
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int2))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+13)], datos_int2))  
}

min(AICC)<AICC[1]
## [1] TRUE
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+13],"' "))
## [1] "Se elimina por este criterio la variable: 'Debito' "
variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 7
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int2))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+13)], datos_int2))  
}

min(AICC)<AICC[1]
## [1] TRUE
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+13],"' "))
## [1] "Se elimina por este criterio la variable: 'Valor_prom_sqr' "
variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 8
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int2))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+13)], datos_int2))  
}

min(AICC)<AICC[1]
## [1] TRUE
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+13],"' "))
## [1] "Se elimina por este criterio la variable: 'Pago_digital' "
variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 9
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int2))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+13)], datos_int2))  
}

min(AICC)<AICC[1]
## [1] TRUE
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+13],"' "))
## [1] "Se elimina por este criterio la variable: 'Pago_digital_sqrt' "
variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 10
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int2))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+13)], datos_int2))  
}

min(AICC)<AICC[1]
## [1] TRUE
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+13],"' "))
## [1] "Se elimina por este criterio la variable: 'PIB_pc_PPA_sqrt' "
variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 11
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int2))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+13)], datos_int2))  
}

min(AICC)<AICC[1]
## [1] TRUE
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+13],"' "))
## [1] "Se elimina por este criterio la variable: 'Densidad_Neg_sqrt' "
variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 12
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int2))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+13)], datos_int2))  
}

min(AICC)<AICC[1]
## [1] TRUE
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+13],"' "))
## [1] "Se elimina por este criterio la variable: 'Densidad_Neg' "
variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 13
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int2))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+13)], datos_int2))  
}

min(AICC)<AICC[1]
## [1] TRUE
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+13],"' "))
## [1] "Se elimina por este criterio la variable: 'Valor_prom' "
variables_controles<-variables_controles[-(which.min(AICC)+13)]
#Paso 14
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int2))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+13)], datos_int2))  
}

min(AICC)<AICC[1]
## [1] TRUE
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+13],"' "))
## [1] "Se elimina por este criterio la variable: 'Cajero_Autom_sqrt' "
variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 15
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int2))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+13)], datos_int2))  
}

min(AICC)<AICC[1]
## [1] TRUE
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+13],"' "))
## [1] "Se elimina por este criterio la variable: 'PIB_pc_PPA' "
variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 16
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int2))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+13)], datos_int2))  
}

min(AICC)<AICC[1]
## [1] FALSE
# El AICc ya no es menor, entonces no se eliminan columnas
controles1<-controles

# Deja las siguiente variables:
variables_controles
##  [1] "Regulacion_intercambio" "Año_2010"               "Año_2011"              
##  [4] "Año_2012"               "Año_2013"               "Año_2014"              
##  [7] "Año_2015"               "Año_2016"               "Año_2017"              
## [10] "Año_2018"               "Año_2019"               "Año_2020"              
## [13] "Año_2021"               "Año_2022"               "Crimen"                
## [16] "Cuenta"                 "Credito"                "Densidad_Pob"          
## [19] "ICH"                    "Europa"                 "Asia_Este"             
## [22] "Cuenta_sqrt"            "Credito_sqrt"           "ICH_sqrt"
#Estimación del modelo con variables seleccionadas por AICc:
# Por problemas de colinealidad se dejan por fuera 2010 al 2012 y 2015: 
modelo_int_nolineal_con_cont_ef_aicc<-lm(formula = Intercambio ~ Regulacion_intercambio + Año_2013 + 
                                           Año_2014 + Año_2016 + Año_2017 + Año_2018 + Año_2019 + 
                                           Año_2020 + Año_2021 + Año_2022 + Crimen + Cuenta + Credito + 
                                           Densidad_Pob + ICH + Europa + Asia_Este + Cuenta_sqrt + 
                                           Credito_sqrt + ICH_sqrt, 
                                         data = datos_int2)

# Errores robustos
modelo_int_nolineal_con_cont_ef_aicc_corr_hc<-coeftest(modelo_int_nolineal_con_cont_ef_aicc, 
                                                    vcov. = vcovHC(modelo_int_nolineal_con_cont_ef_aicc, 
                                                                   "HC1", adjust = TRUE, sandwich = TRUE))
modelo_int_nolineal_con_cont_ef_aicc_corr_hac<-coeftest(modelo_int_nolineal_con_cont_ef_aicc,
                                                     vcov. = vcovHAC(modelo_int_nolineal_con_cont_ef_aicc, 
                                                     adjust = TRUE, sandwich = TRUE))

# Pronóstico CR
# creación de variables cuadráticas:
datos<-datos %>% mutate(
  Cajero_Autom_sqrt = Cajero_Autom**2, 
  Crimen_sqrt = Crimen**2, 
  Cuenta_sqrt = Cuenta**2, 
  Credito_sqrt = Credito**2, 
  Debito_sqrt = Debito**2, 
  Densidad_Pob_sqrt = Densidad_Pob**2, 
  Densidad_Neg_sqrt = Densidad_Neg**2, 
  PIB_pc_PPA_sqrt = PIB_pc_PPA**2, 
  ICH_sqrt = ICH**2, 
  Pago_digital_sqrt = Pago_digital**2, 
  Valor_prom_sqr = Valor_prom**2
)
#Sin regulación
pred_int_nolineal_sin_reg_con_cont_aicc_ef<-predict(modelo_int_nolineal_con_cont_ef_aicc, newdata = datos, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
#Con regulación
# Se le agrega a CR la adquirencia
data_CR<-datos
data_CR[ which(datos$Codigo_Pais=="CRI"), which(names(datos)=="Regulacion_intercambio") ]<-1

pred_int_nolineal_con_reg_con_cont_aicc_ef<-predict(modelo_int_nolineal_con_cont_ef_aicc, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
# Visualización
stargazer(modelo_int_nolineal_con_cont_ef_aicc, modelo_int_nolineal_con_cont_ef_aicc_corr_hc,
          type = "html", 
          title = "Regresión no lineal sobre la tasa de intercambio con los controles seleccionados mediante el AICc y efectos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F,
          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
Regresión no lineal sobre la tasa de intercambio con los controles seleccionados mediante el AICc y efectos de tiempo
Variable dependiente
Tasa intercambio Tasa intercambio
MCO MCO HC
(1) (2)
Regulacion_intercambio -0.597*** -0.597***
(0.071) (0.074)
Año_2013 0.006 0.006
(0.144) (0.141)
Año_2014 0.004 0.004
(0.150) (0.150)
Año_2016 0.146 0.146
(0.146) (0.126)
Año_2017 -0.007 -0.007
(0.127) (0.114)
Año_2018 0.056 0.056
(0.139) (0.118)
Año_2019 0.047 0.047
(0.135) (0.133)
Año_2020 0.096 0.096
(0.134) (0.105)
Año_2021 0.096 0.096
(0.143) (0.133)
Año_2022 0.020 0.020
(0.179) (0.183)
Crimen -0.027*** -0.027***
(0.005) (0.004)
Cuenta -0.037*** -0.037***
(0.011) (0.009)
Credito 0.023*** 0.023***
(0.006) (0.007)
Densidad_Pob -0.001*** -0.001***
(0.0001) (0.0001)
ICH -13.666*** -13.666***
(4.624) (4.293)
Europa -0.660*** -0.660***
(0.091) (0.107)
Asia_Este -0.305** -0.305***
(0.118) (0.115)
Cuenta_sqrt 0.0002* 0.0002**
(0.0001) (0.0001)
Credito_sqrt -0.0003*** -0.0003***
(0.0001) (0.0001)
ICH_sqrt 9.103** 9.103***
(3.515) (3.200)
Constant 8.447*** 8.447***
(1.589) (1.468)
Observations 142
R2 0.842
Adjusted R2 0.816
Residual Std. Error 0.264 (df = 121)
F Statistic 32.211*** (df = 20; 121)
Note: p<0.1; p<0.05; p<0.01
  • Selección de variables mediante BIC con efectos fijos de tiempo:
# Selección variables con BIC efectos de tiempo: ----
modelo_int_nolineal_con_cont_ef_bic<-lm(formula = Intercambio ~ Regulacion_intercambio + Año_2010 +
                                          Año_2011 + Año_2012 + Año_2013 + Año_2014 + Año_2015 + 
                                          Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 + 
                                          Año_2022 + Cajero_Autom + Crimen + Cuenta + Pago_digital + Debito + 
                                          Credito + Densidad_Pob + Densidad_Neg + PIB_pc_PPA + ICH + 
                                          Valor_prom + Europa + Asia_Este + Am_lat + Cajero_Autom_sqrt +
                                          Crimen_sqrt + Cuenta_sqrt + Credito_sqrt + Debito_sqrt +
                                          Densidad_Pob_sqrt + Densidad_Neg_sqrt + PIB_pc_PPA_sqrt + ICH_sqrt +
                                          Pago_digital_sqrt + Valor_prom_sqr, data= datos_int2)

variables_controles<-c("Regulacion_intercambio","Año_2010","Año_2011","Año_2012","Año_2013", "Año_2014", "Año_2015", "Año_2016", "Año_2017", "Año_2018", "Año_2019","Año_2020", "Año_2021", "Año_2022", "Cajero_Autom", "Crimen", "Cuenta","Pago_digital", "Debito","Credito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH", "Valor_prom", "Europa", "Asia_Este", "Am_lat", "Cajero_Autom_sqrt", "Crimen_sqrt", "Cuenta_sqrt", "Credito_sqrt", "Debito_sqrt","Densidad_Pob_sqrt", "Densidad_Neg_sqrt", "PIB_pc_PPA_sqrt", "ICH_sqrt", "Pago_digital_sqrt","Valor_prom_sqr")

controles<- datos_int2 %>% dplyr::select(c(variables_controles)) %>% as.matrix()
#Paso 1
BIC<-c()
BIC[1]<-BIC(modelo_int_nolineal_con_cont_ef_bic)

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+13)], datos_int2))  
}

min(BIC)<BIC[1]
## [1] TRUE
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+13],"' "))
## [1] "Se elimina por este criterio la variable: 'Densidad_Pob_sqrt' "
variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 2
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int2))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+13)], datos_int2))  
}

min(BIC)<BIC[1]
## [1] TRUE
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+13],"' "))
## [1] "Se elimina por este criterio la variable: 'Crimen_sqrt' "
variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 3
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int2))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+13)], datos_int2))  
}

min(BIC)<BIC[1]
## [1] TRUE
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+13],"' "))
## [1] "Se elimina por este criterio la variable: 'Cajero_Autom' "
variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 4
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int2))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+13)], datos_int2))  
}

min(BIC)<BIC[1]
## [1] TRUE
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+13],"' "))
## [1] "Se elimina por este criterio la variable: 'Am_lat' "
variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 5
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int2))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+13)], datos_int2))  
}

min(BIC)<BIC[1]
## [1] TRUE
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+13],"' "))
## [1] "Se elimina por este criterio la variable: 'Debito_sqrt' "
variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 6
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int2))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+13)], datos_int2))  
}

min(BIC)<BIC[1]
## [1] TRUE
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+13],"' "))
## [1] "Se elimina por este criterio la variable: 'Debito' "
variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 7
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int2))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+13)], datos_int2))  
}

min(BIC)<BIC[1]
## [1] TRUE
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+13],"' "))
## [1] "Se elimina por este criterio la variable: 'Valor_prom_sqr' "
variables_controles<-variables_controles[-(which.min(BIC)+13)]


#Paso 8
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int2))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+13)], datos_int2))  
}

min(BIC)<BIC[1]
## [1] TRUE
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+13],"' "))
## [1] "Se elimina por este criterio la variable: 'Pago_digital' "
variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 9
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int2))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+13)], datos_int2))  
}

min(BIC)<BIC[1]
## [1] TRUE
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+13],"' "))
## [1] "Se elimina por este criterio la variable: 'Pago_digital_sqrt' "
variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 10
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int2))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+13)], datos_int2))  
}

min(BIC)<BIC[1]
## [1] TRUE
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+13],"' "))
## [1] "Se elimina por este criterio la variable: 'PIB_pc_PPA_sqrt' "
variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 11
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int2))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+13)], datos_int2))  
}

min(BIC)<BIC[1]
## [1] TRUE
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+13],"' "))
## [1] "Se elimina por este criterio la variable: 'Densidad_Neg_sqrt' "
variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 12
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int2))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+13)], datos_int2))  
}

min(BIC)<BIC[1]
## [1] TRUE
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+13],"' "))
## [1] "Se elimina por este criterio la variable: 'Densidad_Neg' "
variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 13
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int2))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+13)], datos_int2))  
}

min(BIC)<BIC[1]
## [1] TRUE
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+13],"' "))
## [1] "Se elimina por este criterio la variable: 'Valor_prom' "
variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 14
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int2))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+13)], datos_int2))  
}

min(BIC)<BIC[1]
## [1] TRUE
#Paso 15
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int2))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+13)], datos_int2))  
}

min(BIC)<BIC[1]
## [1] TRUE
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+13],"' "))
## [1] "Se elimina por este criterio la variable: 'Cajero_Autom_sqrt' "
variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 16
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int2))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+13)], datos_int2))  
}

min(BIC)<BIC[1]
## [1] TRUE
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+13],"' "))
## [1] "Se elimina por este criterio la variable: 'PIB_pc_PPA' "
variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 17
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int2))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+13)], datos_int2))  
}

min(BIC)<BIC[1]
## [1] TRUE
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+13],"' "))
## [1] "Se elimina por este criterio la variable: 'Cuenta_sqrt' "
variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 18
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int2))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+13)], datos_int2))  
}

min(BIC)<BIC[1]
## [1] FALSE
# El BIC ya no es menor, entonces no se eliminan columnas
controles1<-controles

# Deja las siguiente variables:
variables_controles
##  [1] "Regulacion_intercambio" "Año_2010"               "Año_2011"              
##  [4] "Año_2012"               "Año_2013"               "Año_2014"              
##  [7] "Año_2015"               "Año_2016"               "Año_2017"              
## [10] "Año_2018"               "Año_2019"               "Año_2020"              
## [13] "Año_2021"               "Año_2022"               "Crimen"                
## [16] "Cuenta"                 "Credito"                "Densidad_Pob"          
## [19] "ICH"                    "Europa"                 "Asia_Este"             
## [22] "Credito_sqrt"           "ICH_sqrt"
#Estimación del modelo con variables seleccionadas por AICc:
# Por problemas de colinealidad se dejan por fuera 2010 al 2012 y 2015: 
modelo_int_nolineal_con_cont_ef_bic<-lm(formula = Intercambio ~ Regulacion_intercambio + Año_2013 + 
                                           Año_2014 + Año_2016 + Año_2017 + Año_2018 + Año_2019 + 
                                           Año_2020 + Año_2021 + Año_2022 + Crimen + Cuenta + Credito +
                                          Densidad_Pob + ICH + Europa + Asia_Este + Credito_sqrt + ICH_sqrt, 
                                        data = datos_int2)
# Errores robustos
modelo_int_nolineal_con_cont_ef_bic_corr_hc<-coeftest(modelo_int_nolineal_con_cont_ef_bic, 
                                                       vcov. = vcovHC(modelo_int_nolineal_con_cont_ef_bic, 
                                                                      "HC1", adjust = TRUE, sandwich = TRUE))
modelo_int_nolineal_con_cont_ef_bic_corr_hac<-coeftest(modelo_int_nolineal_con_cont_ef_bic,
                                                        vcov. = vcovHAC(modelo_int_nolineal_con_cont_ef_bic, 
                                                                        adjust = TRUE, sandwich = TRUE))
# Pronóstico CR
# creación de variables cuadráticas:
datos<-datos %>% mutate(
  Cajero_Autom_sqrt = Cajero_Autom**2, 
  Crimen_sqrt = Crimen**2, 
  Cuenta_sqrt = Cuenta**2, 
  Credito_sqrt = Credito**2, 
  Debito_sqrt = Debito**2, 
  Densidad_Pob_sqrt = Densidad_Pob**2, 
  Densidad_Neg_sqrt = Densidad_Neg**2, 
  PIB_pc_PPA_sqrt = PIB_pc_PPA**2, 
  ICH_sqrt = ICH**2, 
  Pago_digital_sqrt = Pago_digital**2, 
  Valor_prom_sqr = Valor_prom**2
)
#Sin regulación
pred_int_nolineal_sin_reg_con_cont_bic_ef<-predict(modelo_int_nolineal_con_cont_ef_bic, newdata = datos, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
#Con regulación
# Se le agrega a CR la adquirencia
data_CR<-datos
data_CR[ which(datos$Codigo_Pais=="CRI"), which(names(datos)=="Regulacion_intercambio") ]<-1
pred_int_nolineal_con_reg_con_cont_bic_ef<<-predict(modelo_int_nolineal_con_cont_ef_bic, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
# Visualización
stargazer(modelo_int_nolineal_con_cont_ef_bic, modelo_int_nolineal_con_cont_ef_bic_corr_hc,
          type = "html", 
          title = "Regresión no lineal sobre la tasa de intercambio con todos los controles seleccionados mediante el BIC y efectos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F,
          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
Regresión no lineal sobre la tasa de intercambio con todos los controles seleccionados mediante el BIC y efectos de tiempo
Variable dependiente
Tasa intercambio Tasa intercambio
MCO MCO HC
(1) (2)
Regulacion_intercambio -0.571*** -0.571***
(0.070) (0.074)
Año_2013 -0.003 -0.003
(0.145) (0.139)
Año_2014 -0.021 -0.021
(0.151) (0.144)
Año_2016 0.118 0.118
(0.147) (0.120)
Año_2017 -0.047 -0.047
(0.126) (0.109)
Año_2018 0.017 0.017
(0.139) (0.108)
Año_2019 -0.004 -0.004
(0.134) (0.126)
Año_2020 0.067 0.067
(0.135) (0.098)
Año_2021 0.062 0.062
(0.143) (0.130)
Año_2022 -0.019 -0.019
(0.180) (0.182)
Crimen -0.026*** -0.026***
(0.005) (0.004)
Cuenta -0.017*** -0.017***
(0.003) (0.003)
Credito 0.025*** 0.025***
(0.006) (0.007)
Densidad_Pob -0.001*** -0.001***
(0.0001) (0.0001)
ICH -14.544*** -14.544***
(4.645) (4.308)
Europa -0.656*** -0.656***
(0.092) (0.106)
Asia_Este -0.279** -0.279**
(0.118) (0.110)
Credito_sqrt -0.0003*** -0.0003***
(0.0001) (0.0001)
ICH_sqrt 10.145*** 10.145***
(3.505) (3.200)
Constant 8.026*** 8.026***
(1.588) (1.466)
Observations 142
R2 0.837
Adjusted R2 0.812
Residual Std. Error 0.267 (df = 122)
F Statistic 33.060*** (df = 19; 122)
Note: p<0.1; p<0.05; p<0.01

2.5 Método bootstrap

En este caso se usan los criterios de información AIC (no tiene corrección de muestras pequeñas) y BIC para su comparación. Ambos criterios brindan resultados similares. Además, no se incluyen efectos fijos de tiempo. Esto difiere respecto a su implementación en Stata, donde también se estiman también los modelos que incorporan efectos fijos de tiempo, y se utiliza el AICc. Sin embargo, los resultados son similares.

remuestreos=1000
#AIC:
#Modelo con controles:
set.seed(1)
library(bootStepAIC)
m_boot_aic=boot.stepAIC(modelo_int_con_cont,datos_int,B=remuestreos)
# Sin regulación
predicciones_boot_sin_reg_aic=as.numeric()
for(i in 1:1000){
  coefs_aic=m_boot_aic$BootStepAIC[[i]]
  predicciones_boot_sin_reg_aic[i]=predict(coefs_aic,newdata=datos,type="response")[which(datos$Codigo_Pais=="CRI")]
}
pred_int_boot_con_cont_sin_reg_aic=median(predicciones_boot_sin_reg_aic)
# Con regulación
predicciones_boot_con_reg_aic=as.numeric()
for(i in 1:1000){
  coefs_aic=m_boot_aic$BootStepAIC[[i]]
  predicciones_boot_con_reg_aic[i]=predict(coefs_aic,newdata=data_CR,type="response")[which(datos$Codigo_Pais=="CRI")]
}
pred_int_boot_con_cont_con_reg_aic=median(predicciones_boot_con_reg_aic)
# Visualización
resul<-as.data.frame(cbind(mean(predicciones_boot_con_reg_aic),
                           median(predicciones_boot_con_reg_aic),
                           mean(predicciones_boot_con_reg_aic)-1.96*sd(predicciones_boot_con_reg_aic),
                           mean(predicciones_boot_con_reg_aic)+1.96*sd(predicciones_boot_con_reg_aic)
                           )) %>% round(3)
names(resul)<-c("Promedio","Mediana","2.5%","97.5%")
DT::datatable(resul,rownames="Tasa de intercambio",caption = "Resultados de bootstrap para modelo lineal de intercambio con la selección de controles por AIC", options = list(dom = 't'))
# Gráfica de los pronósticos
library(plotly)
fig<-plot_ly(x = ~predicciones_boot_con_reg_aic, type = "histogram") %>%
  layout(xaxis = list(title = "Comisión de intercambio"),
         yaxis = list(title ="Frecuencia"),
         title = "Pronóstico AIC con boostrap (n=1000)")
fig
# Selección con BIC
#Modelo con controles:
n=nrow(datos_int)
remuestreos=1000
m_boot_bic=boot.stepAIC(modelo_int_con_cont,datos_int,B=remuestreos,k=log(n))
predicciones_boot_sin_reg_bic=as.numeric()
# Sin regulación
for(i in 1:1000){
  coefs_bic=m_boot_bic$BootStepAIC[[i]]
  predicciones_boot_sin_reg_bic[i]=predict(coefs_bic,newdata=datos,type="response")[which(datos$Codigo_Pais=="CRI")]
}
pred_int_boot_con_cont_sin_reg_bic=median(predicciones_boot_sin_reg_bic)
# Con regulación
predicciones_boot_con_reg_bic=as.numeric()
for(i in 1:1000){
  coefs_bic=m_boot_bic$BootStepAIC[[i]]
  predicciones_boot_con_reg_bic[i]=predict(coefs_bic,newdata=data_CR,type="response")[which(datos$Codigo_Pais=="CRI")]
}
pred_int_boot_con_cont_con_reg_bic=median(predicciones_boot_con_reg_bic)
# Visualización
resul<-as.data.frame(cbind(mean(predicciones_boot_con_reg_bic),
                           median(predicciones_boot_con_reg_bic),
                           mean(predicciones_boot_con_reg_bic)-1.96*sd(predicciones_boot_con_reg_bic),
                           mean(predicciones_boot_con_reg_bic)+1.96*sd(predicciones_boot_con_reg_bic)
                           )) %>% round(3)
names(resul)<-c("Promedio","Mediana","2.5%","97.5%")
DT::datatable(resul,rownames="Tasa de intercambio",caption = "Resultados de bootstrap para modelo lineal de intercambio con la selección de controles por BIC", options = list(dom = 't'))
# Gráfica de los pronósticos
fig<-plot_ly(x = ~predicciones_boot_con_reg_bic, type = "histogram") %>%
  layout(xaxis = list(title = "Comisión de intercambio"),
         yaxis = list(title ="Frecuencia"),
         title = "Pronóstico BIC con boostrap (n=1000)")
fig

2.6 Regresión robusta

En este caso, pueden existir diferencias en la regresión respecto a los resultados en Stata debido a que el comando “rreg” en Stata combina dos funciones de ponderación, los pesos Huber y Biweights (https://www.stata.com/manuals13/rrreg.pdf). Por su parte, el comando “rlm” de R implementa cada ponderación por separado, y en este ejercicio se utiliza los pesos Huber (https://www.rdocumentation.org/packages/MASS/versions/7.3-58.1/topics/rlm). Sin embargo, las comisiones esperadas obtenidas para Costa Rica son similares.

# Se mantienen los mismos modelos seleccionados en secciones previas
# Estimación del modelo seleccionado con controles AICC
modelo_robusto_int_con_cont_aicc<-rlm(Intercambio ~ Regulacion_intercambio + Cajero_Autom + Crimen + Cuenta + Debito + Densidad_Pob + ICH + Europa + Asia_Este, datos_int,method="MM", maxit=100)
#Visualización
stargazer(modelo_robusto_int_con_cont_aicc, type = "html", 
          title = "Regresión robusta sobre la tasa de intercambio con controles (seleccionado por AICc) y sin efectos fijos de tiempo", 
          column.labels = c("MCO"), model.names = F, 
          dep.var.labels = c("Tasa intercambio"), dep.var.caption = "Variable dependiente")
Regresión robusta sobre la tasa de intercambio con controles (seleccionado por AICc) y sin efectos fijos de tiempo
Variable dependiente
Tasa intercambio
MCO
Regulacion_intercambio -0.593***
(0.041)
Cajero_Autom 0.001**
(0.001)
Crimen -0.026***
(0.003)
Cuenta -0.019***
(0.002)
Debito 0.007***
(0.002)
Densidad_Pob -0.001***
(0.0001)
ICH -1.214***
(0.379)
Europa -0.789***
(0.068)
Asia_Este -0.334***
(0.091)
Constant 3.807***
(0.223)
Observations 142
Residual Std. Error 0.181 (df = 132)
Note: p<0.1; p<0.05; p<0.01
# Pronósticos CR
# Sin regular
pred_mod_rob_int_sin_reg_con_cont_aicc=predict(modelo_robusto_int_con_cont_aicc, newdata = datos, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

# Con regulación
pred_int_con_cont_con_reg_robusto_aicc=predict(modelo_robusto_int_con_cont_aicc, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

# Estimación del modelo seleccionado con controles BIC
# Se mantiene la selección del modelo lineal con el criterio BIC
modelo_robusto_int_con_cont_bic<-rlm(Intercambio ~ Regulacion_intercambio + Crimen + Cuenta + Debito + Densidad_Pob + ICH + Europa + Asia_Este, data = datos_int,method="MM", maxit=100)

#Visualización
stargazer(modelo_robusto_int_con_cont_bic, type = "html", 
          title = "Regresión robusta sobre la tasa de intercambio con controles (seleccionado por BIC) y sin efectos fijos de tiempo", 
          column.labels = c("MCO"), model.names = F, 
          dep.var.labels = c("Tasa intercambio"), dep.var.caption = "Variable dependiente")
Regresión robusta sobre la tasa de intercambio con controles (seleccionado por BIC) y sin efectos fijos de tiempo
Variable dependiente
Tasa intercambio
MCO
Regulacion_intercambio -0.609***
(0.040)
Crimen -0.027***
(0.003)
Cuenta -0.018***
(0.002)
Debito 0.007***
(0.002)
Densidad_Pob -0.001***
(0.0001)
ICH -1.038***
(0.366)
Europa -0.853***
(0.065)
Asia_Este -0.369***
(0.089)
Constant 3.788***
(0.219)
Observations 142
Residual Std. Error 0.165 (df = 133)
Note: p<0.1; p<0.05; p<0.01
# Sin regular
pred_mod_rob_int_sin_reg_con_cont_bic=predict(modelo_robusto_int_con_cont_bic, newdata = datos, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

# Con regulación
pred_int_con_cont_con_reg_robusto_bic<-predict(modelo_robusto_int_con_cont_bic,newdata = data_CR,interval = "prediction", level = 0.95, type = "response")[which(data_CR$Codigo_Pais=="CRI")]

# Selección modelo con AICc y efectos de tiempo:
# Se omiten los años 2010 al 2012 y 2015 por colinealidad.
modelo_robusto_int_con_cont_aicc_ef<-rlm(Intercambio ~ Regulacion_intercambio + Año_2013 + Año_2014 + Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 + Año_2022 + Cajero_Autom + Crimen + Cuenta + Debito + Densidad_Pob + ICH + Europa + Asia_Este , data = datos_int, method="MM", maxit=100)

#Visualización
stargazer(modelo_robusto_int_con_cont_aicc_ef, type = "html", 
          title = "Regresión robusta sobre la tasa de intercambio con controles (seleccionado por AICc) y con efectos fijos de tiempo", 
          column.labels = c("MCO"), model.names = F, 
          dep.var.labels = c("Tasa intercambio"), dep.var.caption = "Variable dependiente")
Regresión robusta sobre la tasa de intercambio con controles (seleccionado por AICc) y con efectos fijos de tiempo
Variable dependiente
Tasa intercambio
MCO
Regulacion_intercambio -0.661***
(0.055)
Año_2013 -0.157
(0.111)
Año_2014 -0.048
(0.119)
Año_2016 0.014
(0.115)
Año_2017 -0.047
(0.097)
Año_2018 -0.015
(0.108)
Año_2019 -0.156
(0.104)
Año_2020 0.015
(0.103)
Año_2021 -0.076
(0.110)
Año_2022 -0.072
(0.140)
Cajero_Autom 0.001*
(0.001)
Crimen -0.027***
(0.003)
Cuenta -0.020***
(0.002)
Debito 0.008***
(0.002)
Densidad_Pob -0.001***
(0.0001)
ICH -0.804**
(0.403)
Europa -0.830***
(0.071)
Asia_Este -0.357***
(0.090)
Constant 3.696***
(0.236)
Observations 142
Residual Std. Error 0.176 (df = 123)
Note: p<0.1; p<0.05; p<0.01
# Pronósticos CR
# Sin regular
pred_mod_rob_int_sin_reg_con_cont_aicc_ef=predict(modelo_robusto_int_con_cont_aicc_ef, newdata = datos, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

# Con regulación
pred_int_con_cont_con_reg_robusto_aicc_ef=predict(modelo_robusto_int_con_cont_aicc_ef, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

# Selección modelo con BIC y efectos de tiempo:
# Se omiten los años 2010 al 2012 y 2015 por colinealidad.
modelo_robusto_int_con_cont_bic_ef<-rlm(Intercambio ~ Regulacion_intercambio + Crimen + Cuenta + Debito + Densidad_Pob + Europa + Asia_Este + Año_2013 + Año_2014 + Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 + Año_2022, data = datos_int, method="MM", maxit=100)
#Visualización
stargazer(modelo_robusto_int_con_cont_bic_ef, type = "html", 
          title = "Regresión robusta sobre la tasa de intercambio con controles (seleccionado por BIC) y con efectos fijos de tiempo", 
          column.labels = c("MCO"), model.names = F, 
          dep.var.labels = c("Tasa intercambio"), dep.var.caption = "Variable dependiente")
Regresión robusta sobre la tasa de intercambio con controles (seleccionado por BIC) y con efectos fijos de tiempo
Variable dependiente
Tasa intercambio
MCO
Regulacion_intercambio -0.697***
(0.054)
Crimen -0.025***
(0.003)
Cuenta -0.019***
(0.002)
Debito 0.007***
(0.002)
Densidad_Pob -0.001***
(0.0001)
Europa -0.852***
(0.074)
Asia_Este -0.371***
(0.095)
Año_2013 -0.246**
(0.114)
Año_2014 -0.037
(0.127)
Año_2016 -0.040
(0.123)
Año_2017 -0.137
(0.102)
Año_2018 -0.088
(0.115)
Año_2019 -0.220**
(0.112)
Año_2020 -0.043
(0.110)
Año_2021 -0.147
(0.117)
Año_2022 -0.152
(0.149)
Constant 3.345***
(0.144)
Observations 142
Residual Std. Error 0.220 (df = 125)
Note: p<0.1; p<0.05; p<0.01
# Pronósticos CR
# Sin regular
pred_mod_rob_int_sin_reg_con_cont_bic_ef=predict(modelo_robusto_int_con_cont_bic_ef, newdata = datos, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

# Con regulación
pred_int_con_cont_con_reg_robusto_bic_ef=predict(modelo_robusto_int_con_cont_bic_ef, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

2.7 Omitir al Espacio Económico Europeo (EEE) de la estimación:

#Se filtran los datos para excluir países del EEE
datos_sin_EEE<-datos_int[datos_int$EEE != 1,]
#Regresión sin controles
modelo_int_sin_cont_sin_EEE<-lm(Intercambio ~ Regulacion_intercambio, datos_sin_EEE)

modelo_int_sin_cont_sin_EEE_corr_hc<-coeftest(modelo_int_sin_cont_sin_EEE, vcov. = vcovHC(modelo_int_sin_cont_sin_EEE, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_int_sin_cont_sin_EEE_corr_hac<-coeftest(modelo_int_sin_cont_sin_EEE, vcov. = vcovHAC(modelo_int_sin_cont_sin_EEE, adjust = TRUE, sandwich = TRUE))
# visualización
#stargazer(modelo_int_sin_cont_sin_EEE, modelo_int_sin_cont_sin_EEE_corr_hc, type = "html",
#          title = "Regresión sobre la tasa de intercambio sin controles y sin EEE", 
#          column.labels = c("MCO","MCO HC"), model.names = F, 
#          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
#          dep.var.caption = "Variable dependiente")
#Pronóstico CR
#Sin regulación
pred_int_con_cont_sin_reg_sin_EEE<-predict(modelo_int_sin_cont_sin_EEE, newdata = datos, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
#Con regulación
pred_int_con_cont_con_reg_con_EEE<-predict(modelo_int_sin_cont_sin_EEE, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
modelo_int_con_cont_sin_EEE=lm(Intercambio ~ Regulacion_intercambio + Cajero_Autom + Credito +
                                 Crimen + Cuenta + Pago_digital + Debito + Densidad_Pob + 
                                 Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom + Europa +
                                 Asia_Este + Am_lat, datos_sin_EEE)

#Visualización
#stargazer(modelo_int_con_cont_sin_EEE, type = "html",
#          title = "Regresión sobre la tasa de intercambio con controles y sin EEE", 
#          column.labels = c("MCO"), model.names = F, 
#          dep.var.labels = c("Tasa intercambio"), 
#          dep.var.caption = "Variable dependiente")
#Sin regulación
pred_int_con_cont_sin_reg_sin_EEE<-predict(modelo_int_con_cont_sin_EEE, newdata = datos, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
#Con regulación
pred_int_con_cont_con_reg_sin_EEE<-predict(modelo_int_con_cont_sin_EEE, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
#Regresión con todos los controles más efectos fijos de tiempo
modelo_int_con_cont_sin_EEE_ef=lm(Intercambio ~ Regulacion_intercambio + Cajero_Autom + Credito + Crimen + Cuenta + Pago_digital + Debito + Densidad_Pob + Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom + Europa + Asia_Este + Am_lat + Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021, datos_sin_EEE)
#summary(modelo_int_con_cont_sin_EEE_ef)
#Sin regulación
pred_int_con_cont_sin_reg_sin_EEE_ef<-predict(modelo_int_con_cont_sin_EEE_ef, newdata = datos, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
#Con regulación
pred_int_con_cont_con_reg_con_EEE_ef<-predict(modelo_int_con_cont_sin_EEE_ef, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
  • Selección de variables:

  • Selección de variables mediante AICc sin efectos fijos de tiempo:

# Selección con AICc
datos_sin_EEE<-datos_int[datos_int$EEE != 1,]
datos_sin_EEE<-datos_sin_EEE %>% na.omit()
# Modelo inicial
modelo_int_con_cont_sin_EEE_aicc<-lm(formula = Intercambio ~ Regulacion_intercambio + Cajero_Autom +
                               Crimen + Cuenta + Pago_digital + Debito + Credito + Densidad_Pob +
                               Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom + Europa + 
                               Asia_Este + Am_lat, datos_sin_EEE)

variables_controles<-c("Regulacion_intercambio", "Cajero_Autom", "Crimen", "Cuenta", "Pago_digital", "Debito", "Credito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH", "Valor_prom", "Europa", "Asia_Este", "Am_lat")

controles<- datos_sin_EEE %>% dplyr::select(c(variables_controles)) %>% as.matrix()

#Paso 1
AICC<-c()
AICC[1]<-aicc(modelo_int_con_cont_sin_EEE_aicc)

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_sin_EEE))  
}

min(AICC)<AICC[1]
## [1] TRUE
#El AICc elimina la siguiente variable:
controles<-controles[,-which.min(AICC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
## [1] "Se elimina por este criterio la variable: 'Pago_digital' "
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 2
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_sin_EEE))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_sin_EEE))  
}

min(AICC)<AICC[1]
## [1] TRUE
#El AICc elimina la siguiente variable:
controles<-controles[,-which.min(AICC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
## [1] "Se elimina por este criterio la variable: 'Densidad_Neg' "
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 3
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_sin_EEE))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_sin_EEE))  
}

min(AICC)<AICC[1]
## [1] TRUE
#El AICc elimina la siguiente variable:
controles<-controles[,-which.min(AICC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
## [1] "Se elimina por este criterio la variable: 'Credito' "
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 4
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_sin_EEE))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_sin_EEE))  
}

min(AICC)<AICC[1]
## [1] TRUE
#El AICc elimina la siguiente variable:
controles<-controles[,-which.min(AICC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
## [1] "Se elimina por este criterio la variable: 'Valor_prom' "
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 5
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_sin_EEE))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_sin_EEE))  
}

min(AICC)<AICC[1]
## [1] TRUE
#El AICc elimina la siguiente variable
controles<-controles[,-which.min(AICC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
## [1] "Se elimina por este criterio la variable: 'Am_lat' "
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 6
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_sin_EEE))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_sin_EEE))  
}

min(AICC)<AICC[1]
## [1] FALSE
# El AICC ya no es menor, entonces no se eliminan columnas
controles1<-controles
print(paste0("El criterio deja las siguientes variables: ","'",variables_controles,"' "))
##  [1] "El criterio deja las siguientes variables: 'Regulacion_intercambio' "
##  [2] "El criterio deja las siguientes variables: 'Cajero_Autom' "          
##  [3] "El criterio deja las siguientes variables: 'Crimen' "                
##  [4] "El criterio deja las siguientes variables: 'Cuenta' "                
##  [5] "El criterio deja las siguientes variables: 'Debito' "                
##  [6] "El criterio deja las siguientes variables: 'Densidad_Pob' "          
##  [7] "El criterio deja las siguientes variables: 'PIB_pc_PPA' "            
##  [8] "El criterio deja las siguientes variables: 'ICH' "                   
##  [9] "El criterio deja las siguientes variables: 'Europa' "                
## [10] "El criterio deja las siguientes variables: 'Asia_Este' "
variables_controles
##  [1] "Regulacion_intercambio" "Cajero_Autom"           "Crimen"                
##  [4] "Cuenta"                 "Debito"                 "Densidad_Pob"          
##  [7] "PIB_pc_PPA"             "ICH"                    "Europa"                
## [10] "Asia_Este"
# Estimación modelo seleccionado
modelo_int_con_cont_sin_EEE_aicc=lm(Intercambio ~ Regulacion_intercambio + Cajero_Autom + Crimen + 
    Cuenta + Debito + Densidad_Pob + PIB_pc_PPA + ICH + Europa + 
    Asia_Este, data = datos_sin_EEE)

# Pronóstico CR
#Sin regulación
pred_int_con_cont_sin_reg_sin_EEE_aicc<-predict(modelo_int_con_cont_sin_EEE_aicc, newdata = datos, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
#Con regulación
pred_int_con_cont_con_reg_sin_EEE_aicc<-predict(modelo_int_con_cont_sin_EEE_aicc, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Resultado final de la selección de variables control por AICc

stargazer(modelo_int_con_cont_sin_EEE_aicc, type = "html",
          title = "Regresión sobre la tasa de intercambio con selección AICc para controles y sin EEE", 
          column.labels = c("MCO"), model.names = F, 
          dep.var.labels = c("Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
Regresión sobre la tasa de intercambio con selección AICc para controles y sin EEE
Variable dependiente
Tasa intercambio
MCO
Regulacion_intercambio -0.491***
(0.062)
Cajero_Autom 0.002***
(0.001)
Crimen -0.028***
(0.003)
Cuenta -0.018***
(0.003)
Debito 0.006***
(0.002)
Densidad_Pob -0.001***
(0.0003)
PIB_pc_PPA 0.00001***
(0.00000)
ICH -3.186***
(0.600)
Europa -0.561***
(0.077)
Asia_Este -0.462***
(0.099)
Constant 4.704***
(0.346)
Observations 78
R2 0.885
Adjusted R2 0.868
Residual Std. Error 0.206 (df = 67)
F Statistic 51.776*** (df = 10; 67)
Note: p<0.1; p<0.05; p<0.01
  • Selección de variables mediante BIC sin efectos fijos de tiempo:
#Modelo con controles y sin efectos del tiempo:
# BIC
modelo_int_con_cont_sin_EEE_bic = modelo_int_con_cont_sin_EEE
m1<-step(modelo_int_con_cont_sin_EEE_bic,k=log(n))
## Start:  AIC=-181.74
## Intercambio ~ Regulacion_intercambio + Cajero_Autom + Credito + 
##     Crimen + Cuenta + Pago_digital + Debito + Densidad_Pob + 
##     Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom + Europa + Asia_Este + 
##     Am_lat
## 
##                          Df Sum of Sq    RSS     AIC
## - Pago_digital            1   0.00051 2.7466 -186.68
## - Densidad_Neg            1   0.00152 2.7476 -186.65
## - Credito                 1   0.00760 2.7537 -186.48
## - Valor_prom              1   0.01660 2.7627 -186.22
## - Am_lat                  1   0.03665 2.7827 -185.66
## - Cajero_Autom            1   0.06396 2.8100 -184.90
## - Cuenta                  1   0.17538 2.9214 -181.86
## <none>                                2.7461 -181.74
## - PIB_pc_PPA              1   0.33034 3.0764 -177.83
## - Debito                  1   0.33887 3.0849 -177.62
## - Asia_Este               1   0.34715 3.0932 -177.41
## - Densidad_Pob            1   0.45636 3.2024 -174.70
## - ICH                     1   0.84954 3.5956 -165.67
## - Europa                  1   0.93495 3.6810 -163.84
## - Regulacion_intercambio  1   2.37736 5.1234 -138.05
## - Crimen                  1   2.53170 5.2778 -135.73
## 
## Step:  AIC=-186.68
## Intercambio ~ Regulacion_intercambio + Cajero_Autom + Credito + 
##     Crimen + Cuenta + Debito + Densidad_Pob + Densidad_Neg + 
##     PIB_pc_PPA + ICH + Valor_prom + Europa + Asia_Este + Am_lat
## 
##                          Df Sum of Sq    RSS     AIC
## - Densidad_Neg            1   0.00110 2.7477 -191.60
## - Credito                 1   0.01128 2.7579 -191.31
## - Valor_prom              1   0.02147 2.7680 -191.03
## - Am_lat                  1   0.04213 2.7887 -190.45
## - Cajero_Autom            1   0.06627 2.8129 -189.77
## <none>                                2.7466 -186.68
## - PIB_pc_PPA              1   0.32983 3.0764 -182.79
## - Debito                  1   0.35230 3.0989 -182.22
## - Asia_Este               1   0.40490 3.1515 -180.91
## - Densidad_Pob            1   0.67635 3.4229 -174.46
## - Europa                  1   0.93808 3.6847 -168.72
## - ICH                     1   0.94312 3.6897 -168.61
## - Cuenta                  1   1.55836 4.3049 -156.58
## - Regulacion_intercambio  1   2.45567 5.2023 -141.81
## - Crimen                  1   2.53730 5.2839 -140.60
## 
## Step:  AIC=-191.6
## Intercambio ~ Regulacion_intercambio + Cajero_Autom + Credito + 
##     Crimen + Cuenta + Debito + Densidad_Pob + PIB_pc_PPA + ICH + 
##     Valor_prom + Europa + Asia_Este + Am_lat
## 
##                          Df Sum of Sq    RSS     AIC
## - Credito                 1   0.01486 2.7625 -196.14
## - Valor_prom              1   0.02117 2.7689 -195.96
## - Am_lat                  1   0.04121 2.7889 -195.40
## - Cajero_Autom            1   0.06613 2.8138 -194.70
## <none>                                2.7477 -191.60
## - PIB_pc_PPA              1   0.33294 3.0806 -187.64
## - Debito                  1   0.35853 3.1062 -186.99
## - Asia_Este               1   0.41068 3.1584 -185.69
## - Densidad_Pob            1   0.67959 3.4273 -179.32
## - Europa                  1   0.99033 3.7380 -172.55
## - ICH                     1   1.01481 3.7625 -172.04
## - Cuenta                  1   1.55937 4.3071 -161.50
## - Crimen                  1   2.53730 5.2850 -145.54
## - Regulacion_intercambio  1   2.63006 5.3777 -144.18
## 
## Step:  AIC=-196.14
## Intercambio ~ Regulacion_intercambio + Cajero_Autom + Crimen + 
##     Cuenta + Debito + Densidad_Pob + PIB_pc_PPA + ICH + Valor_prom + 
##     Europa + Asia_Este + Am_lat
## 
##                          Df Sum of Sq    RSS     AIC
## - Valor_prom              1   0.02566 2.7882 -200.37
## - Am_lat                  1   0.04346 2.8060 -199.88
## - Cajero_Autom            1   0.14906 2.9116 -197.00
## <none>                                2.7625 -196.14
## - Debito                  1   0.34606 3.1086 -191.89
## - PIB_pc_PPA              1   0.46693 3.2295 -188.91
## - Asia_Este               1   0.47444 3.2370 -188.73
## - Densidad_Pob            1   0.66995 3.4325 -184.16
## - ICH                     1   1.01748 3.7800 -176.63
## - Europa                  1   1.06749 3.8300 -175.61
## - Cuenta                  1   1.91061 4.6732 -160.09
## - Crimen                  1   2.56232 5.3249 -149.91
## - Regulacion_intercambio  1   2.62465 5.3872 -149.00
## 
## Step:  AIC=-200.37
## Intercambio ~ Regulacion_intercambio + Cajero_Autom + Crimen + 
##     Cuenta + Debito + Densidad_Pob + PIB_pc_PPA + ICH + Europa + 
##     Asia_Este + Am_lat
## 
##                          Df Sum of Sq    RSS     AIC
## - Am_lat                  1   0.04381 2.8320 -204.11
## <none>                                2.7882 -200.37
## - Cajero_Autom            1   0.21049 2.9987 -199.65
## - Debito                  1   0.35626 3.1445 -195.95
## - PIB_pc_PPA              1   0.44988 3.2381 -193.66
## - Asia_Este               1   0.64071 3.4289 -189.19
## - Densidad_Pob            1   0.82006 3.6083 -185.22
## - ICH                     1   1.01219 3.8004 -181.17
## - Europa                  1   1.06098 3.8492 -180.18
## - Cuenta                  1   1.90888 4.6971 -164.65
## - Regulacion_intercambio  1   2.60644 5.3946 -153.85
## - Crimen                  1   2.74972 5.5379 -151.80
## 
## Step:  AIC=-204.11
## Intercambio ~ Regulacion_intercambio + Cajero_Autom + Crimen + 
##     Cuenta + Debito + Densidad_Pob + PIB_pc_PPA + ICH + Europa + 
##     Asia_Este
## 
##                          Df Sum of Sq    RSS     AIC
## <none>                                2.8320 -204.11
## - Debito                  1   0.31331 3.1453 -200.88
## - Cajero_Autom            1   0.32353 3.1555 -200.63
## - PIB_pc_PPA              1   0.43750 3.2695 -197.86
## - Densidad_Pob            1   0.92675 3.7588 -186.99
## - Asia_Este               1   0.92986 3.7619 -186.92
## - ICH                     1   1.19243 4.0244 -181.66
## - Cuenta                  1   2.04304 4.8750 -166.70
## - Europa                  1   2.27489 5.1069 -163.08
## - Regulacion_intercambio  1   2.61683 5.4488 -158.02
## - Crimen                  1   2.78467 5.6167 -155.66
# Estimación del modelo
modelo_int_con_cont_sin_EEE_bic=lm(formula = Intercambio ~ Regulacion_intercambio + Cajero_Autom + 
    Crimen + Cuenta + Debito + Densidad_Pob + PIB_pc_PPA + ICH + Europa + Asia_Este, data = datos_sin_EEE)
# Pronóstico CR
#Sin regulación
pred_int_con_cont_sin_reg_sin_EEE_BIC<-predict(modelo_int_con_cont_sin_EEE_bic, newdata = datos, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
#Con regulación
pred_int_con_cont_con_reg_sin_EEE_BIC<-predict(modelo_int_con_cont_sin_EEE_bic, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Resultado final de la selección de variables control por BIC

stargazer(modelo_int_con_cont_sin_EEE_bic, type = "html",
          title = "Regresión sobre la tasa de intercambio con selección BIC para controles y sin EEE", 
          column.labels = c("MCO"), model.names = F, 
          dep.var.labels = c("Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
Regresión sobre la tasa de intercambio con selección BIC para controles y sin EEE
Variable dependiente
Tasa intercambio
MCO
Regulacion_intercambio -0.491***
(0.062)
Cajero_Autom 0.002***
(0.001)
Crimen -0.028***
(0.003)
Cuenta -0.018***
(0.003)
Debito 0.006***
(0.002)
Densidad_Pob -0.001***
(0.0003)
PIB_pc_PPA 0.00001***
(0.00000)
ICH -3.186***
(0.600)
Europa -0.561***
(0.077)
Asia_Este -0.462***
(0.099)
Constant 4.704***
(0.346)
Observations 78
R2 0.885
Adjusted R2 0.868
Residual Std. Error 0.206 (df = 67)
F Statistic 51.776*** (df = 10; 67)
Note: p<0.1; p<0.05; p<0.01
  • Selección de variables mediante AICc con efectos fijos de tiempo:
#Selección con AICc
datos_sin_EEE<-datos_sin_EEE %>% na.omit()
#Seleccionar el modelo utilizando el AICc (corrige por tamaño de muestra pequeña), más efectos fijos de tiempo
modelo_int_con_cont_sin_EEE_aicc_ef<-lm(log(Intercambio) ~ Regulacion_intercambio + Año_2010 + Año_2011 + 
                                          Año_2012 + Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + 
                                          Año_2018 + Año_2019 + Año_2020 + Año_2021  + Año_2022 +
                                          Cajero_Autom + Crimen + Cuenta + Pago_digital + Debito + Credito +
                                          Densidad_Pob + Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom +
                                          Europa + Asia_Este + Am_lat, datos_sin_EEE)

variables_controles<-c("Regulacion_intercambio", "Año_2010", "Año_2011", "Año_2012", "Año_2013", "Año_2014",
                       "Año_2015", "Año_2016", "Año_2017", "Año_2018", "Año_2019", "Año_2020", "Año_2021",
                       "Año_2022","Cajero_Autom", "Crimen", "Cuenta", "Pago_digital", "Debito", "Credito",
                       "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH", "Valor_prom", "Europa", 
                       "Asia_Este", "Am_lat")
controles<- datos_sin_EEE %>% dplyr::select(c(variables_controles)) %>% as.matrix()

#Paso 1
AICC<-c()
AICC[1]<-aicc(modelo_int_con_cont_sin_EEE_aicc_ef)

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+13)], datos_sin_EEE))  
}

min(AICC)<AICC[1]
## [1] TRUE
#El AICc es menor al eliminar la columna 16
controles<-controles[,-(which.min(AICC)+13)]
variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 2
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_sin_EEE))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+13)], datos_sin_EEE))  
}

min(AICC)<AICC[1]
## [1] TRUE
#El AICc es menor al eliminar la columna 26
controles<-controles[,-(which.min(AICC)+13)]
variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 3
AICC<-c()
AICC[1]<-aicc(lm(log(Intercambio) ~ controles, datos_sin_EEE))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+13)], datos_sin_EEE))  
}

min(AICC)<AICC[1]
## [1] TRUE
#El AICc es menor al eliminar la columna 15
controles<-controles[,-(which.min(AICC)+13)]
variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 4
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_sin_EEE))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+13)], datos_sin_EEE))  
}

min(AICC)<AICC[1]
## [1] TRUE
#El AICc es menor al eliminar la columna 15
controles<-controles[,-(which.min(AICC)+13)]
variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 5
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_sin_EEE))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+13)], datos_sin_EEE))  
}

min(AICC)<AICC[1]
## [1] TRUE
#El AICc es menor al eliminar la columna 21
controles<-controles[,-(which.min(AICC)+13)]
variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 6
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_sin_EEE))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+13)], datos_sin_EEE))  
}

min(AICC)<AICC[1]
## [1] FALSE
#Ya no se eliminan columnas
controles3<-controles
# variables seleccionadas
variables_controles
##  [1] "Regulacion_intercambio" "Año_2010"               "Año_2011"              
##  [4] "Año_2012"               "Año_2013"               "Año_2014"              
##  [7] "Año_2015"               "Año_2016"               "Año_2017"              
## [10] "Año_2018"               "Año_2019"               "Año_2020"              
## [13] "Año_2021"               "Año_2022"               "Cajero_Autom"          
## [16] "Crimen"                 "Cuenta"                 "Debito"                
## [19] "Densidad_Pob"           "PIB_pc_PPA"             "ICH"                   
## [22] "Europa"                 "Asia_Este"
# Estimación modelo seleccionado:
# No se usa los datos del 2010 al 2012 y 2022 por colinealidad
modelo_int_con_cont_sin_EEE_aicc_ef<-lm(Intercambio ~ Regulacion_intercambio + Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 + Cajero_Autom + Crimen + Cuenta + Debito + Densidad_Pob + PIB_pc_PPA + ICH + Europa + Asia_Este, datos_sin_EEE)

# Pronóstico CR
#Sin regulación
pred_int_con_cont_sin_reg_sin_EEE_ef_aic<-predict(modelo_int_con_cont_sin_EEE_aicc_ef, newdata = datos, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
#Con regulación
pred_int_con_cont_con_reg_sin_EEE_ef_aic<-predict(modelo_int_con_cont_sin_EEE_aicc_ef, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

A continuación se presenta el resultado final de la selección de las variables control con AICc y efectos fijos.

stargazer(modelo_int_con_cont_sin_EEE_aicc_ef, type = "html",
          title = "Regresión sobre la tasa de intercambio con efectos fijos, con selección AICc para controles y sin EEE", 
          column.labels = c("MCO"), model.names = F, 
          dep.var.labels = c("Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
Regresión sobre la tasa de intercambio con efectos fijos, con selección AICc para controles y sin EEE
Variable dependiente
Tasa intercambio
MCO
Regulacion_intercambio -0.475***
(0.066)
Año_2013 -0.048
(0.255)
Año_2014 0.065
(0.162)
Año_2015 0.066
(0.161)
Año_2016 0.274*
(0.150)
Año_2017 0.136
(0.135)
Año_2018 0.171
(0.137)
Año_2019 0.138
(0.131)
Año_2020 0.068
(0.126)
Año_2021 0.107
(0.130)
Cajero_Autom 0.002**
(0.001)
Crimen -0.028***
(0.004)
Cuenta -0.015***
(0.003)
Debito 0.005**
(0.002)
Densidad_Pob -0.001***
(0.0003)
PIB_pc_PPA 0.00001***
(0.00000)
ICH -3.342***
(0.712)
Europa -0.540***
(0.081)
Asia_Este -0.510***
(0.108)
Constant 4.592***
(0.441)
Observations 78
R2 0.896
Adjusted R2 0.863
Residual Std. Error 0.210 (df = 58)
F Statistic 26.426*** (df = 19; 58)
Note: p<0.1; p<0.05; p<0.01
  • Selección de variables mediante BIC con efectos fijos de tiempo:
#Seleccionar el modelo utilizando el BIC, más efectos fijos de tiempo
modelo_int_con_cont_sin_EEE_bic_ef<-lm(Intercambio ~ Regulacion_intercambio + Año_2010 + Año_2011 + Año_2012 +
                                     Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + Año_2019 + 
                                     Año_2020 + Año_2021 + Año_2022 + Cajero_Autom + Crimen + Cuenta +
                                     Pago_digital + Debito + Credito + Densidad_Pob + Densidad_Neg + PIB_pc_PPA +
                                     ICH + Valor_prom + Europa + Asia_Este + Am_lat, datos_sin_EEE)

variables_controles<-c("Regulacion_intercambio", "Año_2010", "Año_2011", "Año_2012", "Año_2013", "Año_2014", 
                       "Año_2015", "Año_2016", "Año_2017", "Año_2018", "Año_2019", "Año_2020", "Año_2021", "Año_2022",
                       "Cajero_Autom", "Crimen", "Cuenta", "Pago_digital", "Debito", "Credito", "Densidad_Pob", "Densidad_Neg",
                       "PIB_pc_PPA", "ICH", "Valor_prom", "Europa", "Asia_Este", "Am_lat")

controles<- datos_sin_EEE %>% dplyr::select(c(variables_controles)) %>% as.matrix()

#Paso 1
BIC<-c()
BIC[1]<-BIC(modelo_int_con_cont_sin_EEE_bic_ef)

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+13)], datos_sin_EEE))  
}

min(BIC)<BIC[1]
## [1] TRUE
#El BIC elimina la siguiente variable
controles<-controles[,-(which.min(BIC)+13)]
print(paste0("Variable eliminada: ",variables_controles[(which.min(BIC)+13)]))
## [1] "Variable eliminada: Densidad_Neg"
variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 2
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_sin_EEE))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+13)], datos_sin_EEE))  
}

min(BIC)<BIC[1]
## [1] TRUE
#El BIC elimina la siguiente variable
controles<-controles[,-(which.min(BIC)+13)]
print(paste0("Variable eliminada: ",variables_controles[(which.min(BIC)+13)]))
## [1] "Variable eliminada: Valor_prom"
variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 3
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_sin_EEE))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+13)], datos_sin_EEE))  
}

min(BIC)<BIC[1]
## [1] TRUE
#El BIC elimina la siguiente variable
controles<-controles[,-(which.min(BIC)+13)]
print(paste0("Variable eliminada: ",variables_controles[(which.min(BIC)+13)]))
## [1] "Variable eliminada: Credito"
variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 4
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_sin_EEE))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+13)], datos_sin_EEE))  
}

min(BIC)<BIC[1]
## [1] TRUE
#El BIC es menor al eliminar la columna 15
controles<-controles[,-(which.min(BIC)+13)]
print(paste0("Variable eliminada: ",variables_controles[(which.min(BIC)+13)]))
## [1] "Variable eliminada: Am_lat"
variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 5
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_sin_EEE))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+13)], datos_sin_EEE))  
}

min(BIC)<BIC[1]
## [1] TRUE
#El BIC elimina la siguiente variable
controles<-controles[,-(which.min(BIC)+13)]
print(paste0("Variable eliminada: ",variables_controles[(which.min(BIC)+13)]))
## [1] "Variable eliminada: Pago_digital"
variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 6
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_sin_EEE))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+13)], datos_sin_EEE))  
}

min(BIC)<BIC[1]
## [1] FALSE
#No se eliminan más columnas
controles4<-controles

#Variables a usar
variables_controles
##  [1] "Regulacion_intercambio" "Año_2010"               "Año_2011"              
##  [4] "Año_2012"               "Año_2013"               "Año_2014"              
##  [7] "Año_2015"               "Año_2016"               "Año_2017"              
## [10] "Año_2018"               "Año_2019"               "Año_2020"              
## [13] "Año_2021"               "Año_2022"               "Cajero_Autom"          
## [16] "Crimen"                 "Cuenta"                 "Debito"                
## [19] "Densidad_Pob"           "PIB_pc_PPA"             "ICH"                   
## [22] "Europa"                 "Asia_Este"
# Estimación del modelo
modelo_int_con_cont_sin_EEE_bic_ef<-lm(Intercambio ~ Regulacion_intercambio + Año_2013 +
                                         Año_2014 + Año_2015 + Año_2016 + Año_2017 + 
                                         Año_2018 + Año_2019 + Año_2020 + Año_2021 +
                                         Cajero_Autom + Crimen + Cuenta + Debito +
                                         Densidad_Pob + PIB_pc_PPA + ICH + Europa +
                                         Asia_Este, datos_sin_EEE)
# Pronóstico CR
#Sin regulación
pred_int_con_cont_sin_reg_sin_EEE_bic_ef<-predict(modelo_int_con_cont_sin_EEE_bic_ef, newdata = datos, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
pred_int_con_cont_sin_reg_sin_EEE_bic_ef
## [1] 1.73956
#Con regulación
pred_int_con_cont_con_reg_sin_EEE_bic_ef<-predict(modelo_int_con_cont_sin_EEE_bic_ef, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
pred_int_con_cont_con_reg_sin_EEE_bic_ef
## [1] 1.264546

A continuación se presenta el resultado final de la selección de las variables control con BIC y efectos fijos.

stargazer(modelo_int_con_cont_sin_EEE_bic_ef, type = "html",
          title = "Regresión sobre la tasa de intercambio con efectos fijos, con selección BIC para controles y sin EEE", 
          column.labels = c("MCO"), model.names = F, 
          dep.var.labels = c("Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
Regresión sobre la tasa de intercambio con efectos fijos, con selección BIC para controles y sin EEE
Variable dependiente
Tasa intercambio
MCO
Regulacion_intercambio -0.475***
(0.066)
Año_2013 -0.048
(0.255)
Año_2014 0.065
(0.162)
Año_2015 0.066
(0.161)
Año_2016 0.274*
(0.150)
Año_2017 0.136
(0.135)
Año_2018 0.171
(0.137)
Año_2019 0.138
(0.131)
Año_2020 0.068
(0.126)
Año_2021 0.107
(0.130)
Cajero_Autom 0.002**
(0.001)
Crimen -0.028***
(0.004)
Cuenta -0.015***
(0.003)
Debito 0.005**
(0.002)
Densidad_Pob -0.001***
(0.0003)
PIB_pc_PPA 0.00001***
(0.00000)
ICH -3.342***
(0.712)
Europa -0.540***
(0.081)
Asia_Este -0.510***
(0.108)
Constant 4.592***
(0.441)
Observations 78
R2 0.896
Adjusted R2 0.863
Residual Std. Error 0.210 (df = 58)
F Statistic 26.426*** (df = 19; 58)
Note: p<0.1; p<0.05; p<0.01

2.8 Restringir la muestra a solo países regulados:

# Solo con los países regulados
datos_int_reg=datos_int[datos_int$Regulacion_intercambio==1,]

#Usando todos los controles:
modelo_int_reg_con_cont=lm(Intercambio ~ Cajero_Autom + Credito + 
    Crimen + Cuenta + Pago_digital + Debito + Densidad_Pob + 
    Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom + Europa + Asia_Este + 
    Am_lat,datos_int_reg)

modelo_int_reg_con_cont_corr_hc<-coeftest(modelo_int_reg_con_cont, vcov. = vcovHC(modelo_int_reg_con_cont, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_int_reg_con_cont_corr_hac<-coeftest(modelo_int_reg_con_cont, vcov. = vcovHAC(modelo_int_reg_con_cont, adjust = TRUE, sandwich = TRUE))

#stargazer(modelo_int_reg_con_cont, modelo_int_reg_con_cont_corr_hc,
#          type = "html", title = "Regresión sobre la tasa de intercambio con todos los controles, solo muestra con países regulados",
#          column.labels = c("MCO","MCO HC"), model.names = F, 
#          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
#          dep.var.caption = "Variable dependiente")
#Pronóstico CR
#Con regulación
pred_int_reg_con_cont<-predict(modelo_int_reg_con_cont, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
# Regresión con todos los controles más efectos fijos de tiempo  
modelo_int_reg_con_cont_ef=lm(Intercambio ~ Cajero_Autom + Credito + 
    Crimen + Cuenta + Pago_digital + Debito + Densidad_Pob + 
    Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom + Europa + Asia_Este + 
    Am_lat + Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + Año_2019 +
      Año_2020 + Año_2021,datos_int_reg)
#Con regulación
pred_int_reg_con_cont_ef<-predict(modelo_int_reg_con_cont_ef, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
  • Selección de variables:

  • Selección de variables mediante AICc sin efectos fijos de tiempo:

# Modelo inicial
modelo_int_reg_con_cont_aicc<-lm(formula = Intercambio ~ Regulacion_intercambio + Cajero_Autom +
                                       Crimen + Cuenta + Pago_digital + Debito + Credito + Densidad_Pob +
                                       Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom + Europa + 
                                       Asia_Este + Am_lat, datos_int_reg)

variables_controles<-c("Regulacion_intercambio", "Cajero_Autom", "Crimen", "Cuenta", "Pago_digital", "Debito", "Credito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH", "Valor_prom", "Europa", "Asia_Este", "Am_lat")

controles<- datos_int_reg %>% dplyr::select(c(variables_controles)) %>% as.matrix()

#Paso 1
AICC<-c()
AICC[1]<-aicc(modelo_int_reg_con_cont_aicc)

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int_reg))  
}

min(AICC)<AICC[1]
## [1] TRUE
#El AICc elimina la siguiente variable:
controles<-controles[,-which.min(AICC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
## [1] "Se elimina por este criterio la variable: 'Am_lat' "
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 2
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int_reg))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int_reg))  
}

min(AICC)<AICC[1]
## [1] TRUE
#El AICc elimina la siguiente variable:
controles<-controles[,-which.min(AICC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
## [1] "Se elimina por este criterio la variable: 'Credito' "
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 3
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int_reg))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int_reg))  
}

min(AICC)<AICC[1]
## [1] TRUE
#El AICc elimina la siguiente variable:
controles<-controles[,-which.min(AICC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
## [1] "Se elimina por este criterio la variable: 'Cajero_Autom' "
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 4
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int_reg))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int_reg))  
}

min(AICC)<AICC[1]
## [1] TRUE
#El AICc elimina la siguiente variable:
controles<-controles[,-which.min(AICC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
## [1] "Se elimina por este criterio la variable: 'Valor_prom' "
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 5
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int_reg))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int_reg))  
}

min(AICC)<AICC[1]
## [1] TRUE
#El AICc elimina la siguiente variable
controles<-controles[,-which.min(AICC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
## [1] "Se elimina por este criterio la variable: 'Pago_digital' "
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 6
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int_reg))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int_reg))  
}

min(AICC)<AICC[1]
## [1] TRUE
#El AICc elimina la siguiente variable
controles<-controles[,-which.min(AICC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
## [1] "Se elimina por este criterio la variable: 'Densidad_Neg' "
variables_controles<-variables_controles[-which.min(AICC)]
#Paso 7
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int_reg))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int_reg))  
}

min(AICC)<AICC[1]
## [1] FALSE
# El AICC ya no es menor, entonces no se eliminan columnas
controles1<-controles
print(paste0("El criterio deja las siguientes variables: ","'",variables_controles,"' "))
## [1] "El criterio deja las siguientes variables: 'Regulacion_intercambio' "
## [2] "El criterio deja las siguientes variables: 'Crimen' "                
## [3] "El criterio deja las siguientes variables: 'Cuenta' "                
## [4] "El criterio deja las siguientes variables: 'Debito' "                
## [5] "El criterio deja las siguientes variables: 'Densidad_Pob' "          
## [6] "El criterio deja las siguientes variables: 'PIB_pc_PPA' "            
## [7] "El criterio deja las siguientes variables: 'ICH' "                   
## [8] "El criterio deja las siguientes variables: 'Europa' "                
## [9] "El criterio deja las siguientes variables: 'Asia_Este' "
variables_controles
## [1] "Regulacion_intercambio" "Crimen"                 "Cuenta"                
## [4] "Debito"                 "Densidad_Pob"           "PIB_pc_PPA"            
## [7] "ICH"                    "Europa"                 "Asia_Este"
# Estimación del modelo seleccionado
modelo_int_reg_con_cont_aicc=lm(Intercambio ~ Crimen + Cuenta + Debito + Densidad_Pob +
                                  PIB_pc_PPA + ICH + Europa + Asia_Este, datos_int_reg)
summary(modelo_int_reg_con_cont_aicc)
## 
## Call:
## lm(formula = Intercambio ~ Crimen + Cuenta + Debito + Densidad_Pob + 
##     PIB_pc_PPA + ICH + Europa + Asia_Este, data = datos_int_reg)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.44982 -0.09683 -0.04821  0.07437  0.75708 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   2.742e+00  3.125e-01   8.775 5.48e-13 ***
## Crimen       -7.844e-03  4.779e-03  -1.641  0.10508    
## Cuenta       -1.208e-02  2.521e-03  -4.790 8.67e-06 ***
## Debito        6.107e-03  1.916e-03   3.188  0.00212 ** 
## Densidad_Pob -6.701e-04  1.417e-04  -4.730 1.09e-05 ***
## PIB_pc_PPA    3.228e-06  2.004e-06   1.611  0.11160    
## ICH          -1.346e+00  4.997e-01  -2.694  0.00878 ** 
## Europa       -8.078e-01  8.474e-02  -9.533 2.14e-14 ***
## Asia_Este    -3.518e-01  1.049e-01  -3.354  0.00127 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.2076 on 72 degrees of freedom
## Multiple R-squared:  0.8294, Adjusted R-squared:  0.8104 
## F-statistic: 43.74 on 8 and 72 DF,  p-value: < 2.2e-16
# Pronóstico CR
pred_int_reg_con_cont_aicc<-predict(modelo_int_reg_con_cont_aicc, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
pred_int_reg_con_cont_aicc
## [1] 1.303505
  • Selección de variables mediante BIC sin efectos fijos de tiempo:
#Selección con el criterio BIC:
modelo_int_reg_con_cont_bic=modelo_int_reg_con_cont
step(modelo_int_reg_con_cont_bic,k=log(n))
## Start:  AIC=-194.42
## Intercambio ~ Cajero_Autom + Credito + Crimen + Cuenta + Pago_digital + 
##     Debito + Densidad_Pob + Densidad_Neg + PIB_pc_PPA + ICH + 
##     Valor_prom + Europa + Asia_Este + Am_lat
## 
##                Df Sum of Sq    RSS     AIC
## - Am_lat        1   0.00653 2.9408 -199.20
## - Cajero_Autom  1   0.00659 2.9408 -199.19
## - Credito       1   0.00773 2.9419 -199.16
## - Valor_prom    1   0.01980 2.9540 -198.83
## - PIB_pc_PPA    1   0.03799 2.9722 -198.34
## - Densidad_Neg  1   0.05265 2.9869 -197.94
## - Pago_digital  1   0.05591 2.9901 -197.85
## - Crimen        1   0.06278 2.9970 -197.66
## - Asia_Este     1   0.08927 3.0235 -196.95
## - Cuenta        1   0.18015 3.1144 -194.55
## <none>                      2.9342 -194.42
## - ICH           1   0.25519 3.1894 -192.62
## - Debito        1   0.32720 3.2614 -190.81
## - Densidad_Pob  1   0.41910 3.3533 -188.56
## - Europa        1   0.97620 3.9104 -176.11
## 
## Step:  AIC=-199.2
## Intercambio ~ Cajero_Autom + Credito + Crimen + Cuenta + Pago_digital + 
##     Debito + Densidad_Pob + Densidad_Neg + PIB_pc_PPA + ICH + 
##     Valor_prom + Europa + Asia_Este
## 
##                Df Sum of Sq    RSS     AIC
## - Credito       1   0.00580 2.9466 -203.99
## - Cajero_Autom  1   0.00957 2.9503 -203.89
## - Valor_prom    1   0.02240 2.9632 -203.54
## - PIB_pc_PPA    1   0.04586 2.9866 -202.90
## - Densidad_Neg  1   0.05679 2.9975 -202.60
## - Pago_digital  1   0.06592 3.0067 -202.36
## - Crimen        1   0.06638 3.0071 -202.34
## <none>                      2.9408 -199.20
## - Asia_Este     1   0.20046 3.1412 -198.81
## - Cuenta        1   0.23535 3.1761 -197.92
## - ICH           1   0.25146 3.1922 -197.51
## - Debito        1   0.50210 3.4429 -191.38
## - Densidad_Pob  1   0.57924 3.5200 -189.59
## - Europa        1   2.47200 5.4128 -154.74
## 
## Step:  AIC=-203.99
## Intercambio ~ Cajero_Autom + Crimen + Cuenta + Pago_digital + 
##     Debito + Densidad_Pob + Densidad_Neg + PIB_pc_PPA + ICH + 
##     Valor_prom + Europa + Asia_Este
## 
##                Df Sum of Sq    RSS     AIC
## - Cajero_Autom  1    0.0054 2.9520 -208.80
## - Valor_prom    1    0.0261 2.9726 -208.24
## - Densidad_Neg  1    0.0623 3.0089 -207.25
## - PIB_pc_PPA    1    0.0812 3.0278 -206.75
## - Crimen        1    0.0814 3.0280 -206.74
## - Pago_digital  1    0.0991 3.0456 -206.27
## <none>                      2.9466 -203.99
## - Asia_Este     1    0.2315 3.1781 -202.82
## - ICH           1    0.2479 3.1945 -202.41
## - Cuenta        1    0.2790 3.2256 -201.62
## - Debito        1    0.5035 3.4501 -196.17
## - Densidad_Pob  1    0.5786 3.5251 -194.43
## - Europa        1    3.5042 6.4508 -145.48
## 
## Step:  AIC=-208.8
## Intercambio ~ Crimen + Cuenta + Pago_digital + Debito + Densidad_Pob + 
##     Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom + Europa + Asia_Este
## 
##                Df Sum of Sq    RSS     AIC
## - Valor_prom    1    0.0231 2.9751 -213.12
## - Densidad_Neg  1    0.0600 3.0120 -212.12
## - PIB_pc_PPA    1    0.0801 3.0320 -211.59
## - Crimen        1    0.0842 3.0362 -211.48
## - Pago_digital  1    0.0937 3.0456 -211.23
## <none>                      2.9520 -208.80
## - Asia_Este     1    0.2282 3.1802 -207.72
## - Cuenta        1    0.2736 3.2256 -206.58
## - ICH           1    0.2774 3.2293 -206.48
## - Debito        1    0.5386 3.4906 -200.18
## - Densidad_Pob  1    0.5783 3.5303 -199.26
## - Europa        1    3.6566 6.6086 -148.48
## 
## Step:  AIC=-213.12
## Intercambio ~ Crimen + Cuenta + Pago_digital + Debito + Densidad_Pob + 
##     Densidad_Neg + PIB_pc_PPA + ICH + Europa + Asia_Este
## 
##                Df Sum of Sq    RSS     AIC
## - Pago_digital  1    0.0713 3.0464 -216.16
## - Densidad_Neg  1    0.0873 3.0623 -215.74
## - PIB_pc_PPA    1    0.1083 3.0834 -215.18
## - Crimen        1    0.1187 3.0938 -214.91
## <none>                      2.9751 -213.12
## - Asia_Este     1    0.2095 3.1845 -212.57
## - Cuenta        1    0.2711 3.2462 -211.02
## - ICH           1    0.3570 3.3321 -208.90
## - Debito        1    0.5211 3.4962 -205.01
## - Densidad_Pob  1    0.5798 3.5549 -203.66
## - Europa        1    3.8285 6.8036 -151.08
## 
## Step:  AIC=-216.16
## Intercambio ~ Crimen + Cuenta + Debito + Densidad_Pob + Densidad_Neg + 
##     PIB_pc_PPA + ICH + Europa + Asia_Este
## 
##                Df Sum of Sq    RSS     AIC
## - Densidad_Neg  1    0.0570 3.1035 -219.61
## - Crimen        1    0.0804 3.1268 -219.01
## - PIB_pc_PPA    1    0.1354 3.1818 -217.59
## <none>                      3.0464 -216.16
## - ICH           1    0.3016 3.3480 -213.47
## - Asia_Este     1    0.3850 3.4315 -211.48
## - Debito        1    0.4845 3.5309 -209.16
## - Densidad_Pob  1    0.8473 3.8938 -201.24
## - Cuenta        1    0.9483 3.9947 -199.17
## - Europa        1    3.9265 6.9729 -154.04
## 
## Step:  AIC=-219.61
## Intercambio ~ Crimen + Cuenta + Debito + Densidad_Pob + PIB_pc_PPA + 
##     ICH + Europa + Asia_Este
## 
##                Df Sum of Sq    RSS     AIC
## - PIB_pc_PPA    1    0.1118 3.2153 -221.70
## - Crimen        1    0.1161 3.2196 -221.59
## <none>                      3.1035 -219.61
## - ICH           1    0.3128 3.4163 -216.79
## - Debito        1    0.4381 3.5415 -213.88
## - Asia_Este     1    0.4849 3.5883 -212.81
## - Densidad_Pob  1    0.9642 4.0677 -202.66
## - Cuenta        1    0.9890 4.0925 -202.16
## - Europa        1    3.9174 7.0208 -158.44
## 
## Step:  AIC=-221.7
## Intercambio ~ Crimen + Cuenta + Debito + Densidad_Pob + ICH + 
##     Europa + Asia_Este
## 
##                Df Sum of Sq    RSS     AIC
## - Crimen        1    0.0898 3.3051 -224.43
## <none>                      3.2153 -221.70
## - ICH           1    0.2179 3.4332 -221.35
## - Asia_Este     1    0.4903 3.7056 -215.16
## - Debito        1    0.5087 3.7241 -214.76
## - Densidad_Pob  1    0.8985 4.1138 -206.70
## - Cuenta        1    0.9082 4.1235 -206.51
## - Europa        1    3.9127 7.1280 -162.17
## 
## Step:  AIC=-224.43
## Intercambio ~ Cuenta + Debito + Densidad_Pob + ICH + Europa + 
##     Asia_Este
## 
##                Df Sum of Sq    RSS     AIC
## - ICH           1    0.1762 3.4813 -225.18
## <none>                      3.3051 -224.43
## - Asia_Este     1    0.4106 3.7156 -219.90
## - Debito        1    0.4625 3.7676 -218.77
## - Cuenta        1    0.8222 4.1273 -211.39
## - Densidad_Pob  1    0.8347 4.1398 -211.14
## - Europa        1    4.0195 7.3246 -164.93
## 
## Step:  AIC=-225.18
## Intercambio ~ Cuenta + Debito + Densidad_Pob + Europa + Asia_Este
## 
##                Df Sum of Sq    RSS     AIC
## <none>                      3.4813 -225.18
## - Asia_Este     1    0.3645 3.8458 -222.07
## - Debito        1    0.3949 3.8762 -221.43
## - Densidad_Pob  1    0.8174 4.2986 -213.05
## - Cuenta        1    1.5178 4.9990 -200.82
## - Europa        1    4.1106 7.5919 -166.98
## 
## Call:
## lm(formula = Intercambio ~ Cuenta + Debito + Densidad_Pob + Europa + 
##     Asia_Este, data = datos_int_reg)
## 
## Coefficients:
##  (Intercept)        Cuenta        Debito  Densidad_Pob        Europa  
##    1.8793351    -0.0121963     0.0056426    -0.0006053    -0.7709536  
##    Asia_Este  
##   -0.2905325
# Estimación del modelo seleccionado
modelo_int_reg_con_cont_bic=lm(Intercambio ~ Cuenta + Debito + Densidad_Pob + Europa + Asia_Este, datos_int_reg)
summary(modelo_int_reg_con_cont_bic)
## 
## Call:
## lm(formula = Intercambio ~ Cuenta + Debito + Densidad_Pob + Europa + 
##     Asia_Este, data = datos_int_reg)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.33099 -0.12535 -0.08068  0.03955  0.76394 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   1.8793351  0.1052002  17.864  < 2e-16 ***
## Cuenta       -0.0121963  0.0021329  -5.718 2.07e-07 ***
## Debito        0.0056426  0.0019346   2.917  0.00466 ** 
## Densidad_Pob -0.0006053  0.0001443  -4.196 7.37e-05 ***
## Europa       -0.7709536  0.0819244  -9.411 2.48e-14 ***
## Asia_Este    -0.2905325  0.1036722  -2.802  0.00645 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.2154 on 75 degrees of freedom
## Multiple R-squared:  0.8086, Adjusted R-squared:  0.7958 
## F-statistic: 63.36 on 5 and 75 DF,  p-value: < 2.2e-16
# Pronóstico CR
pred_int_reg_con_cont_bic<-predict(modelo_int_reg_con_cont_bic, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
pred_int_reg_con_cont_bic
## [1] 1.279801
  • Selección de variables mediante AICc con efectos fijos de tiempo:
# Selección con AICc
#Seleccionar el modelo utilizando el AICc (corrige por tamaño de muestra pequeña), más efectos fijos de tiempo
modelo_int_reg_con_cont_aicc_ef<-lm(Intercambio ~ Regulacion_intercambio + Año_2010 + Año_2011 + Año_2012 +
                                      Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + Año_2019 +
                                      Año_2020 + Año_2021  + Año_2022 + Cajero_Autom + Crimen + Cuenta + 
                                      Pago_digital + Debito + Credito + Densidad_Pob + Densidad_Neg + PIB_pc_PPA + 
                                      ICH + Valor_prom + Europa + Asia_Este + Am_lat, datos_int_reg)

variables_controles<-c("Regulacion_intercambio", "Año_2010", "Año_2011", "Año_2012", "Año_2013", "Año_2014",
                       "Año_2015", "Año_2016", "Año_2017", "Año_2018", "Año_2019", "Año_2020", "Año_2021",
                       "Año_2022","Cajero_Autom", "Crimen", "Cuenta", "Pago_digital", "Debito", "Credito",
                       "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH", "Valor_prom", "Europa", "Asia_Este",
                       "Am_lat")
controles<- datos_int_reg %>% dplyr::select(c(variables_controles)) %>% as.matrix()

#Paso 1
AICC<-c()
AICC[1]<-aicc(modelo_int_reg_con_cont_aicc_ef)

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+13)], datos_int_reg))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc elimina la siguiente variable
controles<-controles[,-(which.min(AICC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+13],"' "))

[1] “Se elimina por este criterio la variable: ‘Am_lat’”

variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 2
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int_reg))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+13)], datos_int_reg))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc elimina la siguiente variable
controles<-controles[,-(which.min(AICC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+13],"' "))

[1] “Se elimina por este criterio la variable: ‘Credito’”

variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 3
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int_reg))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+13)], datos_int_reg))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc elimina la siguiente variable
controles<-controles[,-(which.min(AICC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+13],"' "))

[1] “Se elimina por este criterio la variable: ‘Cajero_Autom’”

variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 4
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int_reg))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+13)], datos_int_reg))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc elimina la siguiente variable
controles<-controles[,-(which.min(AICC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+13],"' "))

[1] “Se elimina por este criterio la variable: ‘Densidad_Neg’”

variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 5
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int_reg))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+13)], datos_int_reg))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc elimina la siguiente variable
controles<-controles[,-(which.min(AICC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+13],"' "))

[1] “Se elimina por este criterio la variable: ‘PIB_pc_PPA’”

variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 6
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int_reg))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+13)], datos_int_reg))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc elimina la siguiente variable
controles<-controles[,-(which.min(AICC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+13],"' "))

[1] “Se elimina por este criterio la variable: ‘Crimen’”

variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 7
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int_reg))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+13)], datos_int_reg))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc elimina la siguiente variable
controles<-controles[,-(which.min(AICC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+13],"' "))

[1] “Se elimina por este criterio la variable: ‘ICH’”

variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 8
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int_reg))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+13)], datos_int_reg))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc elimina la siguiente variable
controles<-controles[,-(which.min(AICC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+13],"' "))

[1] “Se elimina por este criterio la variable: ‘Pago_digital’”

variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 9
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int_reg))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+13)], datos_int_reg))  
}

min(AICC)<AICC[1]

[1] FALSE

#Ya no se eliminan columnas
controles3<-controles
# variables seleccionadas
variables_controles

[1] “Regulacion_intercambio” “Año_2010” “Año_2011”
[4] “Año_2012” “Año_2013” “Año_2014”
[7] “Año_2015” “Año_2016” “Año_2017”
[10] “Año_2018” “Año_2019” “Año_2020”
[13] “Año_2021” “Año_2022” “Cuenta”
[16] “Debito” “Densidad_Pob” “Valor_prom”
[19] “Europa” “Asia_Este”

# 
# Se dejan por fuera los años 2010 al 2012 y 2014 por problemas de colinealidad
modelo_int_reg_con_cont_aicc_ef<-lm(Intercambio ~ Regulacion_intercambio + Año_2013 + 
                                     Año_2015 + Año_2016 + Año_2017 + Año_2018 +
                                     Año_2019 + Año_2020 + Año_2021 + Año_2022 + 
                                     Cuenta + Debito + Densidad_Pob + Valor_prom + 
                                     Europa + Asia_Este + Am_lat, datos_int_reg)
modelo_int_reg_con_cont_aicc_ef_corr_hc<-coeftest(modelo_int_reg_con_cont_aicc_ef, vcov. = vcovHC(modelo_int_reg_con_cont_aicc_ef, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_int_reg_con_cont_aicc_ef_corr_hac<-coeftest(modelo_int_reg_con_cont_aicc_ef, vcov. = vcovHAC(modelo_int_reg_con_cont_aicc_ef, adjust = TRUE, sandwich = TRUE))
# visualización
stargazer(modelo_int_reg_con_cont_aicc_ef, modelo_int_reg_con_cont_aicc_ef_corr_hc,
          type = "html", title = "Regresión sobre la tasa de intercambio según AICc con efectos fijos de tiempo, solo países regulados en la muestra",
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
Regresión sobre la tasa de intercambio según AICc con efectos fijos de tiempo, solo países regulados en la muestra
Variable dependiente
Tasa intercambio Tasa intercambio
MCO MCO HC
(1) (2)
Regulacion_intercambio
Año_2013 0.256 0.256
(0.247) (0.238)
Año_2015 -0.043 -0.043
(0.164) (0.266)
Año_2016 -0.239 -0.239
(0.158) (0.234)
Año_2017 -0.202 -0.202
(0.129) (0.238)
Año_2018 -0.133 -0.133
(0.153) (0.242)
Año_2019 -0.219 -0.219
(0.147) (0.240)
Año_2020 -0.169 -0.169
(0.151) (0.236)
Año_2021 -0.102 -0.102
(0.148) (0.268)
Año_2022 -0.231 -0.231
(0.166) (0.252)
Cuenta -0.011*** -0.011**
(0.003) (0.005)
Debito 0.007*** 0.007***
(0.002) (0.002)
Densidad_Pob -0.001*** -0.001***
(0.0002) (0.0002)
Valor_prom 0.002* 0.002**
(0.001) (0.001)
Europa -0.819*** -0.819***
(0.142) (0.162)
Asia_Este -0.399** -0.399**
(0.162) (0.179)
Am_lat 0.007 0.007
(0.172) (0.239)
Constant 1.846*** 1.846***
(0.306) (0.446)
Observations 81
R2 0.843
Adjusted R2 0.803
Residual Std. Error 0.211 (df = 64)
F Statistic 21.421*** (df = 16; 64)
Note: p<0.1; p<0.05; p<0.01
# Prónostico CR
pred_int_reg_con_cont_ef_aicc<-predict(modelo_int_reg_con_cont_aicc_ef, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
pred_int_reg_con_cont_ef_aicc

[1] 1.326887

  • Selección de variables mediante BIC con efectos fijos de tiempo:
#Seleccionar el modelo utilizando el BIC, más efectos fijos de tiempo
modelo_int_reg_con_cont_bic_ef<-lm(Intercambio ~ Regulacion_intercambio + Año_2010 + Año_2011 + Año_2012 +
                                     Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + Año_2019 + 
                                     Año_2020 + Año_2021 + Año_2022 + Cajero_Autom + Crimen + Cuenta +
                                     Pago_digital + Debito + Credito + Densidad_Pob + Densidad_Neg + PIB_pc_PPA +
                                     ICH + Valor_prom + Europa + Asia_Este + Am_lat, datos_int_reg)

variables_controles<-c("Regulacion_intercambio", "Año_2010", "Año_2011", "Año_2012", "Año_2013", "Año_2014", 
                       "Año_2015", "Año_2016", "Año_2017", "Año_2018", "Año_2019", "Año_2020", "Año_2021", "Año_2022",
                       "Cajero_Autom", "Crimen", "Cuenta", "Pago_digital", "Debito", "Credito", "Densidad_Pob", "Densidad_Neg",
                       "PIB_pc_PPA", "ICH", "Valor_prom", "Europa", "Asia_Este", "Am_lat")

controles<- datos_int_reg %>% dplyr::select(c(variables_controles)) %>% as.matrix()

#Paso 1
BIC<-c()
BIC[1]<-BIC(modelo_int_reg_con_cont_bic_ef)

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+13)], datos_int_reg))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC elimina la siguiente variable
controles<-controles[,-(which.min(BIC)+13)]
print(paste0("Variable eliminada: ",variables_controles[(which.min(BIC)+13)]))

[1] “Variable eliminada: Am_lat”

variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 2
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int_reg))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+13)], datos_int_reg))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC elimina la siguiente variable
controles<-controles[,-(which.min(BIC)+13)]
print(paste0("Variable eliminada: ",variables_controles[(which.min(BIC)+14)]))

[1] “Variable eliminada: Densidad_Pob”

variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 3
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int_reg))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+13)], datos_int_reg))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC elimina la siguiente variable
controles<-controles[,-(which.min(BIC)+13)]
print(paste0("Variable eliminada: ",variables_controles[(which.min(BIC)+13)]))

[1] “Variable eliminada: Cajero_Autom”

variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 4
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int_reg))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+13)], datos_int_reg))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la columna 15
controles<-controles[,-(which.min(BIC)+13)]
print(paste0("Variable eliminada: ",variables_controles[(which.min(BIC)+13)]))

[1] “Variable eliminada: Densidad_Neg”

variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 5
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int_reg))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+13)], datos_int_reg))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC elimina la siguiente variable
controles<-controles[,-(which.min(BIC)+13)]
print(paste0("Variable eliminada: ",variables_controles[(which.min(BIC)+13)]))

[1] “Variable eliminada: PIB_pc_PPA”

variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 6
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int_reg))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+13)], datos_int_reg))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC elimina la siguiente variable
controles<-controles[,-(which.min(BIC)+13)]
print(paste0("Variable eliminada: ",variables_controles[(which.min(BIC)+13)]))

[1] “Variable eliminada: Crimen”

variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 7
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int_reg))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+13)], datos_int_reg))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC elimina la siguiente variable
controles<-controles[,-(which.min(BIC)+13)]
print(paste0("Variable eliminada: ",variables_controles[(which.min(BIC)+13)]))

[1] “Variable eliminada: ICH”

variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 8
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int_reg))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+13)], datos_int_reg))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC elimina la siguiente variable
controles<-controles[,-(which.min(BIC)+13)]
print(paste0("Variable eliminada: ",variables_controles[(which.min(BIC)+13)]))

[1] “Variable eliminada: Pago_digital”

variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 9
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int_reg))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+13)], datos_int_reg))  
}

min(BIC)<BIC[1]

[1] FALSE

#No se eliminan más columnas
controles4<-controles

#Variables a usar
variables_controles

[1] “Regulacion_intercambio” “Año_2010” “Año_2011”
[4] “Año_2012” “Año_2013” “Año_2014”
[7] “Año_2015” “Año_2016” “Año_2017”
[10] “Año_2018” “Año_2019” “Año_2020”
[13] “Año_2021” “Año_2022” “Cuenta”
[16] “Debito” “Densidad_Pob” “Valor_prom”
[19] “Europa” “Asia_Este”

# Se dejan por fuera los años 2010 al 2012 y 2014 por problemas de colinealidad
modelo_int_reg_con_cont_bic_ef<-lm(Intercambio ~ Regulacion_intercambio + Año_2013 + 
                                     Año_2015 + Año_2016 + Año_2017 + Año_2018 +
                                     Año_2019 + Año_2020 + Año_2021 + Año_2022 + 
                                     Cuenta + Debito + Densidad_Pob + Valor_prom + 
                                     Europa + Asia_Este + Am_lat, datos_int_reg)

modelo_int_reg_con_cont_bic_ef_corr_hc<-coeftest(modelo_int_reg_con_cont_bic_ef, vcov. = vcovHC(modelo_int_reg_con_cont_bic_ef, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_int_reg_con_cont_bic_ef_corr_hac<-coeftest(modelo_int_reg_con_cont_bic_ef, vcov. = vcovHAC(modelo_int_reg_con_cont_bic_ef, adjust = TRUE, sandwich = TRUE))
# Visualización
stargazer(modelo_int_reg_con_cont_bic_ef, modelo_int_reg_con_cont_bic_ef_corr_hc, 
          type = "html", title = "Regresión sobre la tasa de intercambio según BIC con efectos fijos de tiempo, solo países regulados en la muestra",
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
Regresión sobre la tasa de intercambio según BIC con efectos fijos de tiempo, solo países regulados en la muestra
Variable dependiente
Tasa intercambio Tasa intercambio
MCO MCO HC
(1) (2)
Regulacion_intercambio
Año_2013 0.256 0.256
(0.247) (0.238)
Año_2015 -0.043 -0.043
(0.164) (0.266)
Año_2016 -0.239 -0.239
(0.158) (0.234)
Año_2017 -0.202 -0.202
(0.129) (0.238)
Año_2018 -0.133 -0.133
(0.153) (0.242)
Año_2019 -0.219 -0.219
(0.147) (0.240)
Año_2020 -0.169 -0.169
(0.151) (0.236)
Año_2021 -0.102 -0.102
(0.148) (0.268)
Año_2022 -0.231 -0.231
(0.166) (0.252)
Cuenta -0.011*** -0.011**
(0.003) (0.005)
Debito 0.007*** 0.007***
(0.002) (0.002)
Densidad_Pob -0.001*** -0.001***
(0.0002) (0.0002)
Valor_prom 0.002* 0.002**
(0.001) (0.001)
Europa -0.819*** -0.819***
(0.142) (0.162)
Asia_Este -0.399** -0.399**
(0.162) (0.179)
Am_lat 0.007 0.007
(0.172) (0.239)
Constant 1.846*** 1.846***
(0.306) (0.446)
Observations 81
R2 0.843
Adjusted R2 0.803
Residual Std. Error 0.211 (df = 64)
F Statistic 21.421*** (df = 16; 64)
Note: p<0.1; p<0.05; p<0.01
# Prónostico CR
pred_int_reg_con_cont_ef_bic<-predict(modelo_int_reg_con_cont_bic_ef, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
pred_int_reg_con_cont_ef_bic

[1] 1.326887

2.9 Predicción de las comisiones de intercambio

Luego de la etapa de modelación, se realiza un pronóstico para conocer la tasa de intercambio esperada para Costa Rica. A continuación, se calcula un promedio para los valores esperados de cada modelo estimado:

# Sin control
pred_int_con_cont_ef_aicc_sin_reg<-predict(modelo_int_con_cont_ef_aicc, newdata = datos, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI"),]
#Con regulación
pred_int_con_cont_ef_aicc_con_reg<-predict(modelo_int_con_cont_ef_aicc, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

#Pronósticos sin logaritmo toda la muestra
#Predicción con dicotómica sin regulación
pred1_int_sin_reg <-predict(modelo_int_con_cont_aicc, newdata = datos, 
                            interval = "prediction", level = 0.95, 
                            type = "response")[which(datos$Codigo_Pais=="CRI")]

pred2_int_sin_reg<-predict(modelo_int_con_cont_bic, newdata = datos, 
                           interval = "prediction", level = 0.95, 
                           type = "response")[which(datos$Codigo_Pais=="CRI")]

pred3_int_sin_reg<-predict(modelo_int_con_cont_ef_aicc, newdata = datos, 
                           interval = "prediction", level = 0.95, 
                           type = "response")[which(datos$Codigo_Pais=="CRI")]

pred4_int_sin_reg<-predict(modelo_int_con_cont_ef_bic, newdata = datos, 
                           interval = "prediction", level = 0.95, 
                           type = "response")[which(datos$Codigo_Pais=="CRI")]


pred_int_sin_reg<-mean(c(as.numeric(pred1_int_sin_reg), 
                         as.numeric(pred2_int_sin_reg), 
                         as.numeric(pred3_int_sin_reg), 
                         as.numeric(pred4_int_sin_reg)))

#Predicción con dicotómica con regulación
# Se usa data_CR porque se le asignó a CR como regulado
pred1_int_con_reg<-predict(modelo_int_con_cont_aicc, newdata = data_CR, 
                           interval = "prediction", level = 0.95, 
                           type = "response")[which(data_CR$Codigo_Pais=="CRI")]

pred2_int_con_reg<-predict(modelo_int_con_cont_bic, newdata = data_CR, 
                           interval = "prediction", level = 0.95, 
                           type = "response")[which(data_CR$Codigo_Pais=="CRI")]

pred3_int_con_reg<-predict(modelo_int_con_cont_ef_aicc, newdata = data_CR, 
                           interval = "prediction", level = 0.95, 
                           type = "response")[which(data_CR$Codigo_Pais=="CRI")]

pred4_int_con_reg<-predict(modelo_int_con_cont_ef_bic, newdata = data_CR, 
                           interval = "prediction", level = 0.95, 
                           type = "response")[which(data_CR$Codigo_Pais=="CRI")]

pred_int_con_reg<-mean(c(as.numeric(pred1_int_con_reg), 
                         as.numeric(pred2_int_con_reg), 
                         as.numeric(pred3_int_con_reg), 
                         as.numeric(pred4_int_con_reg)))

#Pronósticos con logaritmo toda la muestra

#Predicción con dicotómica sin regulación
pred1_log_int_sin_reg<-exp(predict(modelo_log_int_con_cont_aicc, newdata = datos, 
                                   interval = "prediction", level = 0.95, 
                                   type = "response")[which(datos$Codigo_Pais=="CRI")])

pred2_log_int_sin_reg<-exp(predict(modelo_log_int_con_cont_bic, newdata = datos, 
                                   interval = "prediction", level = 0.95, 
                                   type = "response")[which(datos$Codigo_Pais=="CRI")])

pred3_log_int_sin_reg<-exp(predict(modelo_log_int_con_cont_aicc_ef, newdata = datos, 
                                   interval = "prediction", level = 0.95, 
                                   type = "response")[which(datos$Codigo_Pais=="CRI")])
pred4_log_int_sin_reg<-exp(predict(modelo_log_int_con_cont_bic_ef, newdata = datos, 
                                   interval = "prediction", level = 0.95, 
                                   type = "response")[which(datos$Codigo_Pais=="CRI")])

pred_log_int_sin_reg<-mean(c(as.numeric(pred1_log_int_sin_reg), 
                             as.numeric(pred2_log_int_sin_reg), 
                             as.numeric(pred3_log_int_sin_reg), 
                             as.numeric(pred4_log_int_sin_reg)))


pred_int_con_reg<-mean(c(as.numeric(pred1_int_con_reg), as.numeric(pred2_int_con_reg), as.numeric(pred3_int_con_reg), as.numeric(pred4_int_con_reg)))

#Predicción con dicotómica con regulación
pred1_log_int_con_reg<- exp(predict(modelo_log_int_con_cont_aicc, newdata = data_CR, 
                                    interval = "prediction", level = 0.95, 
                                    type = "response")[which(data_CR$Codigo_Pais=="CRI")])

pred2_log_int_con_reg<-exp(predict(modelo_log_int_con_cont_bic, newdata = data_CR, 
                                   interval = "prediction", level = 0.95, 
                                   type = "response")[which(data_CR$Codigo_Pais=="CRI")])

pred3_log_int_con_reg<-exp(predict(modelo_log_int_con_cont_aicc_ef, newdata = data_CR, 
                                   interval = "prediction", level = 0.95, 
                                   type = "response")[which(data_CR$Codigo_Pais=="CRI")])

pred4_log_int_con_reg<-exp(predict(modelo_log_int_con_cont_bic_ef, newdata = data_CR,
                                   interval = "prediction", level = 0.95,
                                   type = "response")[which(data_CR$Codigo_Pais=="CRI")])

pred_log_int_con_reg<-mean(c(as.numeric(pred1_log_int_con_reg), as.numeric(pred2_log_int_con_reg), as.numeric(pred3_log_int_con_reg), as.numeric(pred4_log_int_con_reg)))

##########################################
#Pronósticos sin logaritmo solo países regulados en la muestra
pred1_int_reg<-predict(modelo_int_reg_con_cont_aicc, newdata = data_CR,
                       interval = "prediction", level = 0.95,
                       type = "response")[which(data_CR$Codigo_Pais=="CRI")]
pred2_int_reg<-predict(modelo_int_reg_con_cont_bic, newdata = data_CR,
                       interval = "prediction", level = 0.95,
                       type = "response")[which(data_CR$Codigo_Pais=="CRI")]
pred3_int_reg<-predict(modelo_int_reg_con_cont_aicc_ef, newdata = data_CR,
                       interval = "prediction", level = 0.95,
                       type = "response")[which(data_CR$Codigo_Pais=="CRI")]

pred4_int_reg<-predict(modelo_int_reg_con_cont_bic_ef, newdata = data_CR,
                       interval = "prediction", level = 0.95,
                       type = "response")[which(data_CR$Codigo_Pais=="CRI")]

pred_int_reg<-mean(c(as.numeric(pred1_int_reg), as.numeric(pred2_int_reg), as.numeric(pred3_int_reg), as.numeric(pred4_int_reg)))

#Tabla pronósticos intercambio -----

pronosticos_int<-round(as.data.frame(cbind(c(pred_int_sin_cont_sin_reg, 
                                       #pred_int_con_cont_sin_reg, 
                                       #pred_int_con_cont_ef_sin_reg, 
                                       pred1_int_sin_reg, 
                                       pred2_int_sin_reg, 
                                       pred3_int_sin_reg, 
                                       pred4_int_sin_reg, 
                                       pred_int_sin_reg), 
                                     c( pred_int_sin_cont_con_reg, 
                                        #pred_int_con_cont_con_reg, 
                                        #pred_int_con_cont_ef_con_reg, 
                                        pred1_int_con_reg, 
                                        pred2_int_con_reg, 
                                        pred3_int_con_reg, 
                                        pred4_int_con_reg, 
                                        pred_int_con_reg) 
)),3)

rownames(pronosticos_int)<-c("Estimación principal - Modelo sin controles", 
#                             "Estimación principal - Modelo con controles sin efectos fijos de tiempo", 
#                             "Estimación principal - Modelo con controles con efectos fijos de tiempo", 
                             "Estimación principal - Modelo AICc sin efectos fijos de tiempo", 
                             "Estimación principal - Modelo BIC sin efectos fijos de tiempo", 
                             "Estimación principal - Modelo AICc con efectos fijos de tiempo", 
                             "Estimación principal - Modelo BIC con efectos fijos de tiempo", 
                             "Estimación principal - Promedio modelos AICc y BIC")

names(pronosticos_int)<-c("Escenario sin regulación","Escenario con regulación")
# Visualización
DT::datatable(pronosticos_int, caption = "Comisión de intercambio esperada para Costa Rica de acuerdo con la estimación principal")
#Ajustando el modelo Sin transformación logarítmica de la variable respuesta:
# Sin regulación
pred_int_sin_reg=mean(pred_int_con_cont_aicc_sin_reg,
                      pred_int_con_cont_bic_sin_reg,
                      pred_int_con_cont_ef_aicc_sin_reg,
                      pred_int_con_cont_ef_bic_sin_reg)

#Con regulación
pred_log_int_con_reg=mean(pred_log_int_con_cont_con_reg_aicc,
                          pred_log_int_con_cont_con_reg_aicc_ef,
                          pred_log_int_con_cont_con_reg_bic,
                          pred_log_int_con_cont_con_reg_bic_ef)

#Ajustando el modelo Con transformación logarítmica de la variable respuesta:
#Sin regulación:
pred_log_int_sin_reg=mean(c(pred_log_int_con_cont_sin_reg_aicc,
                          pred_log_int_con_cont_sin_reg_aicc_ef,
                          pred_log_int_con_cont_sin_reg_bic,
                          pred_log_int_con_cont_sin_reg_bic_ef))
#Con regulación
pred_log_int_con_reg=mean(c(pred_log_int_con_cont_con_reg_aicc,             
                            pred_log_int_con_cont_con_reg_aicc_ef,
                            pred_log_int_con_cont_con_reg_bic,
                            pred_log_int_con_cont_con_reg_bic_ef)
                          )

#Ajustando el modelo con datos de una Muestra de países que cuentan con regulación de intercambio:
# promedio intercambio regulados
pred_int_reg=mean(c(pred_int_reg_con_cont_aicc,
                    pred_int_reg_con_cont_bic,
                    pred_int_reg_con_cont_ef_aicc,
                    pred_int_reg_con_cont_ef_bic)
                  )

pred_log_int_con_cont_ef_sin_reg <- round(mean(c(pred_log_int_con_cont_sin_reg_aicc_ef,
                                                 pred_log_int_con_cont_sin_reg_bic_ef)),3)
pred_log_int_con_cont_ef_con_reg <- round(mean(c(pred_log_int_con_cont_con_reg_aicc_ef,
                                                 pred_log_int_con_cont_con_reg_bic_ef)),3)

#Tabla pronósticos alternativos con log
pronosticos_int_alt_log<-round(as.data.frame(cbind(c( #pred_log_int_sin_cont_sin_reg, 
                                                      #pred_log_int_con_cont_sin_reg, 
                                                      #pred_log_int_con_cont_ef_sin_reg,
                                                      pred1_log_int_sin_reg, 
                                                      pred2_log_int_sin_reg, 
                                                      pred3_log_int_sin_reg,
                                                      pred4_log_int_sin_reg,
                                                      pred_log_int_sin_reg), 
                                                   c( #pred_log_int_sin_cont_con_reg, 
                                                      #pred_log_int_con_cont_con_reg,
                                                      #pred_log_int_con_cont_ef_con_reg, 
                                                      pred1_log_int_con_reg, 
                                                      pred2_log_int_con_reg, 
                                                      pred3_log_int_con_reg, 
                                                      pred4_log_int_con_reg,
                                                      pred_log_int_con_reg) )),3)

rownames(pronosticos_int_alt_log)<-c(
                                     "Modelo con transformación logarítmica - Modelo AICc sin efectos fijos de tiempo", 
                                     "Modelo con transformación logarítmica - Modelo BIC sin efectos fijos de tiempo", 
                                     "Modelo con transformación logarítmica - Modelo AICc con efectos fijos de tiempo", 
                                     "Modelo con transformación logarítmica - Modelo BIC con efectos fijos de tiempo", 
                                     "Modelo con transformación logarítmica - Promedio modelos AICc y BIC")
names(pronosticos_int_alt_log)<-c("Escenario sin regulación","Escenario con regulación")
# Visualización
DT::datatable(pronosticos_int_alt_log, caption = "Comisión de intercambio esperada para Costa Rica de acuerdo con el modelo con transformación logarítmica")
#Tabla pronósticos alternativos solo muestra regulados
pronosticos_int_alt_reg<-round(as.data.frame(cbind(c(
  #pred_int_reg_con_cont, 
  #pred_int_reg_con_cont_ef, 
  pred1_int_reg, pred2_int_reg, 
  pred3_int_reg, 
  pred4_int_reg, 
  pred_int_reg) ) ), 3)

rownames(pronosticos_int_alt_reg)<-c(
  #"Modelo con controles sin efectos fijos de tiempo",
  #"Modelo con controles con efectos fijos de tiempo", 
  "Restringuido a países con regulación - Modelo AICc sin efectos fijos de tiempo", 
  "Restringuido a países con regulación - Modelo BIC sin efectos fijos de tiempo", 
  "Restringuido a países con regulación - Modelo AICc con efectos fijos de tiempo",
  "Restringuido a países con regulación - Modelo BIC con efectos fijos de tiempo", 
  "Restringuido a países con regulación - Promedio modelos AICc y BIC")
names(pronosticos_int_alt_reg)<-c("Pronóstico con solo muestra  de países regulados")

# Visualización
DT::datatable(pronosticos_int_alt_reg, caption = "Comisión de intercambio esperada para Costa Rica al restringir a países con regulación")
#Pronósticos sin logaritmo toda la muestra sin EEE
# Sin regulación
pred_int_sin_cont_sin_EEE_sin_reg<-predict(modelo_int_sin_cont_sin_EEE, newdata = datos, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

pred_int_con_cont_sin_EEE_sin_reg<-predict(modelo_int_con_cont_sin_EEE, newdata = datos, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

pred_int_con_cont_sin_EEE_ef_sin_reg<-predict(modelo_int_con_cont_sin_EEE_ef, newdata = datos, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

# Con regulación
pred_int_sin_cont_sin_EEE_con_reg<-predict(modelo_int_sin_cont_sin_EEE, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

pred_int_con_cont_sin_EEE_con_reg<-predict(modelo_int_con_cont_sin_EEE, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

pred_int_con_cont_sin_EEE_ef_con_reg<-predict(modelo_int_con_cont_sin_EEE_ef, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

#Predicción con dicotómica sin regulación
pred1_int_sin_EEE_sin_reg <-predict(modelo_int_con_cont_sin_EEE_aicc, newdata = datos, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

pred2_int_sin_EEE_sin_reg<-predict(modelo_int_con_cont_sin_EEE_bic, newdata = datos, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

pred3_int_sin_EEE_sin_reg<-predict(modelo_int_con_cont_sin_EEE_aicc_ef, newdata = datos, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

pred4_int_sin_EEE_sin_reg<-predict(modelo_int_con_cont_sin_EEE_bic_ef, newdata = datos, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]


pred_int_sin_EEE_sin_reg<-mean(c(as.numeric(pred1_int_sin_EEE_sin_reg),
                                 as.numeric(pred2_int_sin_EEE_sin_reg), 
                                 as.numeric(pred3_int_sin_EEE_sin_reg),
                                 as.numeric(pred4_int_sin_EEE_sin_reg)))

#Predicción con dicotómica con regulación
pred1_int_sin_EEE_con_reg <-predict(modelo_int_con_cont_sin_EEE_aicc, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

pred2_int_sin_EEE_con_reg<-predict(modelo_int_con_cont_sin_EEE_bic, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

pred3_int_sin_EEE_con_reg<-predict(modelo_int_con_cont_sin_EEE_aicc_ef, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

pred4_int_sin_EEE_con_reg<-predict(modelo_int_con_cont_sin_EEE_bic_ef, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

pred_int_sin_EEE_con_reg<-mean(c(as.numeric(pred1_int_sin_EEE_con_reg), as.numeric(pred2_int_sin_EEE_con_reg), as.numeric(pred3_int_sin_EEE_con_reg), as.numeric(pred4_int_sin_EEE_con_reg)))

#Tabla pronósticos sin EEE
pronosticos_int_sin_EEE<-round(as.data.frame(cbind(
  c( #pred_int_sin_cont_sin_EEE_sin_reg, 
     #pred_int_con_cont_sin_EEE_sin_reg, 
     #pred_int_con_cont_sin_EEE_ef_sin_reg, 
     pred1_int_sin_EEE_sin_reg, 
     pred2_int_sin_EEE_sin_reg, 
     pred3_int_sin_EEE_sin_reg, 
     pred4_int_sin_EEE_sin_reg, 
     pred_int_sin_EEE_sin_reg), 
  c( #pred_int_sin_cont_sin_EEE_con_reg, 
     #pred_int_con_cont_sin_EEE_con_reg, 
     #pred_int_con_cont_sin_EEE_ef_con_reg, 
     pred1_int_sin_EEE_con_reg, 
     pred2_int_sin_EEE_con_reg, 
     pred3_int_sin_EEE_con_reg, 
     pred4_int_sin_EEE_con_reg, 
     pred_int_sin_EEE_con_reg) )),3)

rownames(pronosticos_int_sin_EEE)<-c(#"Modelo sin controles sin EEE", 
                                     #"Modelo con controles sin efectos fijos de tiempo sin EEE", 
                                     #"Modelo con controles con efectos fijos de tiempo sin EEE", 
                                     "Sin el EEE - Modelo AICc sin efectos fijos de tiempo", 
                                     "Sin el EEE - Modelo BIC sin efectos fijos de tiempo", 
                                     "Sin el EEE - Modelo AICc con efectos fijos de tiempo", 
                                     "Sin el EEE - Modelo BIC con efectos fijos de tiempo", 
                                     "Sin el EEE - Promedio modelos AICc y BIC")
names(pronosticos_int_sin_EEE)<-c("Escenario sin regulación","Escenario con regulación")

# Visualización
DT::datatable(pronosticos_int_sin_EEE, caption = "Comisión de intercambio esperada para Costa Rica sin considerar al EEE")

2.10 Regresión sin variables uso de tarjetas

A continuación se muestran los modelos para tasa de intercambio sin considerar las variables control relacionadas con tarjetas. Siguiendo la metodología anterior, se procede a seleccionar las variables con los criterios de información AICc y BIC.

  • Selección de variables mediante AICc sin efectos fijos de tiempo:
# Selección con AICc
variables_controles<-c("Regulacion_intercambio","Crimen", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH", "Europa", "Asia_Este", "Am_lat")
datos_int<-datos %>% dplyr::select(c("Intercambio",variables_controles)) %>% na.omit()
dim(datos_int)

[1] 160 10

# Estimación modelo inicial
modelo_int_sin_tarj_aicc<-lm(Intercambio ~ Regulacion_intercambio + Crimen + Densidad_Pob + 
                               Densidad_Neg + PIB_pc_PPA + ICH + Europa + Asia_Este + 
                               Am_lat, data =  datos_int)
controles<- datos_int %>% dplyr::select(c(variables_controles)) %>% as.matrix()
#Paso 1
AICC<-c()
AICC[1]<-aicc(modelo_int_sin_tarj_aicc)

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}
min(AICC)<AICC[1]

[1] TRUE

#El criterio excluye la siguiente variable
controles<-controles[,-which.min(AICC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))

[1] “Se elimina por este criterio la variable: ‘PIB_pc_PPA’”

variables_controles<-variables_controles[-which.min(AICC)]

#Paso 2
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}
min(AICC)<AICC[1]

[1] TRUE

#El criterio excluye la siguiente variable
controles<-controles[,-which.min(AICC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Asia_Este’”

variables_controles<-variables_controles[-which.min(AICC)]
#Paso 3
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}
min(AICC)<AICC[1]

[1] TRUE

#El criterio excluye la siguiente variable
controles<-controles[,-which.min(AICC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Densidad_Neg’”

variables_controles<-variables_controles[-which.min(AICC)]
#Paso 4
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}
min(AICC)<AICC[1]

[1] FALSE

# El AICC ya no es menor, entonces no se eliminan columnas
controles1<-controles
print(paste0("El criterio deja las siguientes variables: ","'",variables_controles,"' "))

[1] “El criterio deja las siguientes variables: ‘Regulacion_intercambio’” [2] “El criterio deja las siguientes variables: ‘Crimen’”
[3] “El criterio deja las siguientes variables: ‘Densidad_Pob’”
[4] “El criterio deja las siguientes variables: ‘ICH’”
[5] “El criterio deja las siguientes variables: ‘Europa’”
[6] “El criterio deja las siguientes variables: ‘Am_lat’”

# Estimación
modelo_int_sin_tarj_aicc<-lm(Intercambio ~ Regulacion_intercambio + Crimen + Densidad_Pob +
                               ICH + Europa + Am_lat, data =  datos_int)
#Pronóstico para CR
#Con solo una variable:
data_CR<-datos
data_CR[ which(datos$Codigo_Pais=="CRI"), which(names(datos)=="Regulacion_intercambio") ]<-1
#Sin regulación
pred_int_sin_tarj_aicc_sin_reg<-predict(modelo_int_sin_tarj_aicc, newdata = datos, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
#Con regulación
pred_int_sin_tarj_aicc_con_reg<-predict(modelo_int_sin_tarj_aicc, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

# Visualización
#summary(modelo_int_sin_tarj_aicc)
stargazer(modelo_int_sin_tarj_aicc, type = "html", 
          title = "Regresión sobre la tasa de intercambio sin variables relacionadas a tarjetas y selección con AICc", 
          column.labels = c("MCO"), model.names = F, 
          dep.var.labels = c("Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
Regresión sobre la tasa de intercambio sin variables relacionadas a tarjetas y selección con AICc
Variable dependiente
Tasa intercambio
MCO
Regulacion_intercambio -0.540***
(0.055)
Crimen -0.022***
(0.004)
Densidad_Pob -0.0005***
(0.0001)
ICH -2.175***
(0.421)
Europa -0.363***
(0.069)
Am_lat 0.565***
(0.099)
Constant 3.041***
(0.291)
Observations 160
R2 0.758
Adjusted R2 0.748
Residual Std. Error 0.299 (df = 153)
F Statistic 79.717*** (df = 6; 153)
Note: p<0.1; p<0.05; p<0.01
  • Selección de variables mediante BIC sin efectos fijos de tiempo:
# Selección con BIC
variables_controles<-c("Regulacion_intercambio","Crimen", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH", "Europa", "Asia_Este", "Am_lat")
datos_int<-datos %>% dplyr::select(c("Intercambio",variables_controles)) %>% na.omit()
dim(datos_int)

[1] 160 10

# Estimación modelo inicial
modelo_int_sin_tarj_bic<-lm(Intercambio ~ Regulacion_intercambio + Crimen + Densidad_Pob + 
                               Densidad_Neg + PIB_pc_PPA + ICH + Europa + Asia_Este + 
                               Am_lat, data =  datos_int)
controles<- datos_int %>% dplyr::select(c(variables_controles)) %>% as.matrix()
#Paso 1
BIC<-c()
BIC[1]<-BIC(modelo_int_sin_tarj_bic)

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}
min(BIC)<BIC[1]

[1] TRUE

#El criterio excluye la siguiente variable
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))

[1] “Se elimina por este criterio la variable: ‘PIB_pc_PPA’”

variables_controles<-variables_controles[-which.min(BIC)]

#Paso 2
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}
min(BIC)<BIC[1]

[1] TRUE

#El criterio excluye la siguiente variable
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Asia_Este’”

variables_controles<-variables_controles[-which.min(BIC)]
#Paso 3
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}
min(BIC)<BIC[1]

[1] TRUE

#El criterio excluye la siguiente variable
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Densidad_Neg’”

variables_controles<-variables_controles[-which.min(BIC)]
#Paso 4
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}
min(BIC)<BIC[1]

[1] FALSE

# El BIC ya no es menor, entonces no se eliminan columnas
controles1<-controles
print(paste0("El criterio deja las siguientes variables: ","'",variables_controles,"' "))

[1] “El criterio deja las siguientes variables: ‘Regulacion_intercambio’” [2] “El criterio deja las siguientes variables: ‘Crimen’”
[3] “El criterio deja las siguientes variables: ‘Densidad_Pob’”
[4] “El criterio deja las siguientes variables: ‘ICH’”
[5] “El criterio deja las siguientes variables: ‘Europa’”
[6] “El criterio deja las siguientes variables: ‘Am_lat’”

# Estimación
modelo_int_sin_tarj_bic<-lm(Intercambio ~ Regulacion_intercambio + Crimen + Densidad_Pob +
                               ICH + Europa + Am_lat, data =  datos_int)
#Pronóstico para CR
#Con solo una variable:
data_CR<-datos
data_CR[ which(datos$Codigo_Pais=="CRI"), which(names(datos)=="Regulacion_intercambio") ]<-1
#Sin regulación
pred_int_sin_tarj_bic_sin_reg<-predict(modelo_int_sin_tarj_bic, newdata = datos, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
#Con regulación
pred_int_sin_tarj_bic_con_reg<-predict(modelo_int_sin_tarj_bic, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

# Visualización
#summary(modelo_int_sin_tarj_BIC)
stargazer(modelo_int_sin_tarj_bic, type = "html", 
          title = "Regresión sobre la tasa de intercambio sin variables relacionadas a tarjetas y selección con BIC", 
          column.labels = c("MCO"), model.names = F, 
          dep.var.labels = c("Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
Regresión sobre la tasa de intercambio sin variables relacionadas a tarjetas y selección con BIC
Variable dependiente
Tasa intercambio
MCO
Regulacion_intercambio -0.540***
(0.055)
Crimen -0.022***
(0.004)
Densidad_Pob -0.0005***
(0.0001)
ICH -2.175***
(0.421)
Europa -0.363***
(0.069)
Am_lat 0.565***
(0.099)
Constant 3.041***
(0.291)
Observations 160
R2 0.758
Adjusted R2 0.748
Residual Std. Error 0.299 (df = 153)
F Statistic 79.717*** (df = 6; 153)
Note: p<0.1; p<0.05; p<0.01

A continuación se presentan los resultados de usar los criterios de información AICc y BIC incluyendo efectos fijos en los modelos:

  • Selección de variables mediante AICc con efectos fijos de tiempo:
# Selección con AICc
variables_controles<-c("Regulacion_intercambio","Año_2010", "Año_2011", "Año_2012",
                       "Año_2013","Año_2014", "Año_2015", "Año_2016", "Año_2017", 
                       "Año_2018", "Año_2019", "Año_2020","Año_2021", "Año_2022",
                       "Crimen", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", 
                       "ICH", "Europa", "Asia_Este", "Am_lat")

datos_int<-datos %>% dplyr::select(c("Intercambio",variables_controles)) %>% na.omit()
dim(datos_int)

[1] 160 23

# Estimación modelo inicial
modelo_int_sin_tarj_aicc_ef<-lm(Intercambio ~ Regulacion_intercambio  + Año_2010 + 
                               Año_2011 + Año_2012 + Año_2013 + Año_2014 + 
                               Año_2015 + Año_2016 + Año_2017 + Año_2018 +
                               Año_2019 + Año_2020 + Año_2021 + Año_2022 + 
                               Crimen + Densidad_Pob + Densidad_Neg + 
                               PIB_pc_PPA + ICH + Europa + Asia_Este + 
                               Am_lat, data =  datos_int)

controles<- datos_int %>% dplyr::select(c(variables_controles)) %>% as.matrix()


#Paso 1
AICC<-c()
AICC[1]<-aicc(modelo_int_sin_tarj_aicc_ef)

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+13)], datos_int))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+13],"' "))

[1] “Se elimina por este criterio la variable: ‘PIB_pc_PPA’”

variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 2
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+13)], datos_int))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la columna 15
controles<-controles[,-(which.min(AICC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+13],"' "))

[1] “Se elimina por este criterio la variable: ‘Densidad_Neg’”

variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 3
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+13)], datos_int))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la columna 15
controles<-controles[,-(which.min(AICC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+13],"' "))

[1] “Se elimina por este criterio la variable: ‘Asia_Este’”

variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 4
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+13)], datos_int))  
}

min(AICC)<AICC[1]

[1] FALSE

# El AICc ya no es menor, entonces no se eliminan columnas
controles1<-controles
print(paste0("El criterio deja las siguientes variables: ","'",variables_controles,"' "))

[1] “El criterio deja las siguientes variables: ‘Regulacion_intercambio’” [2] “El criterio deja las siguientes variables: ‘Año_2010’”
[3] “El criterio deja las siguientes variables: ‘Año_2011’”
[4] “El criterio deja las siguientes variables: ‘Año_2012’”
[5] “El criterio deja las siguientes variables: ‘Año_2013’”
[6] “El criterio deja las siguientes variables: ‘Año_2014’”
[7] “El criterio deja las siguientes variables: ‘Año_2015’”
[8] “El criterio deja las siguientes variables: ‘Año_2016’”
[9] “El criterio deja las siguientes variables: ‘Año_2017’”
[10] “El criterio deja las siguientes variables: ‘Año_2018’”
[11] “El criterio deja las siguientes variables: ‘Año_2019’”
[12] “El criterio deja las siguientes variables: ‘Año_2020’”
[13] “El criterio deja las siguientes variables: ‘Año_2021’”
[14] “El criterio deja las siguientes variables: ‘Año_2022’”
[15] “El criterio deja las siguientes variables: ‘Crimen’”
[16] “El criterio deja las siguientes variables: ‘Densidad_Pob’”
[17] “El criterio deja las siguientes variables: ‘ICH’”
[18] “El criterio deja las siguientes variables: ‘Europa’”
[19] “El criterio deja las siguientes variables: ‘Am_lat’”

# Estimación del modelo:
modelo_int_sin_tarj_aicc_ef<-lm(Intercambio ~ Regulacion_intercambio  + Año_2011 + Año_2012 +
                                  Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + 
                                  Año_2019 + Año_2020 + Año_2021 + Año_2022 + Crimen + Densidad_Pob + 
                                  ICH + Europa + Am_lat, data =  datos_int)
#Pronóstico para CR
#Con solo una variable:
data_CR<-datos
data_CR[ which(datos$Codigo_Pais=="CRI"), which(names(datos)=="Regulacion_intercambio") ]<-1
#Sin regulación
pred_int_sin_tarj_aicc_ef_sin_reg<-predict(modelo_int_sin_tarj_aicc_ef, newdata = datos, interval = "prediction",
                                        level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
#Con regulación
pred_int_sin_tarj_aicc_ef_con_reg<-predict(modelo_int_sin_tarj_aicc_ef, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

# Visualización
stargazer(modelo_int_sin_tarj_aicc_ef, type = "html", 
          title = "Regresión sobre la tasa de intercambio según AICc con efectos fijos de tiempo, sin variables de uso de tarjetas", 
          column.labels = c("MCO"), model.names = F, 
          dep.var.labels = c("Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
Regresión sobre la tasa de intercambio según AICc con efectos fijos de tiempo, sin variables de uso de tarjetas
Variable dependiente
Tasa intercambio
MCO
Regulacion_intercambio -0.570***
(0.073)
Año_2011 0.453
(0.353)
Año_2012 0.195
(0.372)
Año_2013 0.218
(0.316)
Año_2014 0.351
(0.324)
Año_2015 0.363
(0.326)
Año_2016 0.372
(0.322)
Año_2017 0.257
(0.315)
Año_2018 0.376
(0.319)
Año_2019 0.407
(0.316)
Año_2020 0.347
(0.315)
Año_2021 0.245
(0.321)
Año_2022 0.160
(0.347)
Crimen -0.021***
(0.005)
Densidad_Pob -0.0004***
(0.0001)
ICH -1.934***
(0.458)
Europa -0.321***
(0.077)
Am_lat 0.587***
(0.103)
Constant 2.560***
(0.438)
Observations 160
R2 0.772
Adjusted R2 0.743
Residual Std. Error 0.302 (df = 141)
F Statistic 26.528*** (df = 18; 141)
Note: p<0.1; p<0.05; p<0.01
  • Selección de variables mediante BIC con efectos fijos de tiempo:
# Selección con BIC
variables_controles<-c("Regulacion_intercambio","Año_2010", "Año_2011", "Año_2012",
                       "Año_2013","Año_2014", "Año_2015", "Año_2016", "Año_2017", 
                       "Año_2018", "Año_2019", "Año_2020","Año_2021", "Año_2022",
                       "Crimen", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", 
                       "ICH", "Europa", "Asia_Este", "Am_lat")

datos_int<-datos %>% dplyr::select(c("Intercambio",variables_controles)) %>% na.omit()

# Estimación modelo inicial
modelo_int_sin_tarj_bic_ef<-lm(Intercambio ~ Regulacion_intercambio  + Año_2010 + 
                                  Año_2011 + Año_2012 + Año_2013 + Año_2014 + 
                                  Año_2015 + Año_2016 + Año_2017 + Año_2018 +
                                  Año_2019 + Año_2020 + Año_2021 + Año_2022 + 
                                  Crimen + Densidad_Pob + Densidad_Neg + 
                                  PIB_pc_PPA + ICH + Europa + Asia_Este + 
                                  Am_lat, data =  datos_int)

controles<- datos_int %>% dplyr::select(c(variables_controles)) %>% as.matrix()


#Paso 1
BIC<-c()
BIC[1]<-BIC(modelo_int_sin_tarj_bic_ef)

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+13)], datos_int))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+13],"' "))

[1] “Se elimina por este criterio la variable: ‘PIB_pc_PPA’”

variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 2
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+13)], datos_int))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la columna 15
controles<-controles[,-(which.min(BIC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+13],"' "))

[1] “Se elimina por este criterio la variable: ‘Densidad_Neg’”

variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 3
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+13)], datos_int))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la columna 15
controles<-controles[,-(which.min(BIC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+13],"' "))

[1] “Se elimina por este criterio la variable: ‘Asia_Este’”

variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 4
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+13)], datos_int))  
}

min(BIC)<BIC[1]

[1] FALSE

# El BIC ya no es menor, entonces no se eliminan columnas
controles1<-controles
print(paste0("El criterio deja las siguientes variables: ","'",variables_controles,"' "))

[1] “El criterio deja las siguientes variables: ‘Regulacion_intercambio’” [2] “El criterio deja las siguientes variables: ‘Año_2010’”
[3] “El criterio deja las siguientes variables: ‘Año_2011’”
[4] “El criterio deja las siguientes variables: ‘Año_2012’”
[5] “El criterio deja las siguientes variables: ‘Año_2013’”
[6] “El criterio deja las siguientes variables: ‘Año_2014’”
[7] “El criterio deja las siguientes variables: ‘Año_2015’”
[8] “El criterio deja las siguientes variables: ‘Año_2016’”
[9] “El criterio deja las siguientes variables: ‘Año_2017’”
[10] “El criterio deja las siguientes variables: ‘Año_2018’”
[11] “El criterio deja las siguientes variables: ‘Año_2019’”
[12] “El criterio deja las siguientes variables: ‘Año_2020’”
[13] “El criterio deja las siguientes variables: ‘Año_2021’”
[14] “El criterio deja las siguientes variables: ‘Año_2022’”
[15] “El criterio deja las siguientes variables: ‘Crimen’”
[16] “El criterio deja las siguientes variables: ‘Densidad_Pob’”
[17] “El criterio deja las siguientes variables: ‘ICH’”
[18] “El criterio deja las siguientes variables: ‘Europa’”
[19] “El criterio deja las siguientes variables: ‘Am_lat’”

# Estimación del modelo:
modelo_int_sin_tarj_bic_ef<-lm(Intercambio ~ Regulacion_intercambio  + Año_2011 + Año_2012 +
                                  Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + 
                                  Año_2019 + Año_2020 + Año_2021 + Año_2022 + Crimen + Densidad_Pob + 
                                  ICH + Europa + Am_lat, data =  datos_int)
#Pronóstico para CR
#Con solo una variable:
data_CR<-datos
data_CR[ which(datos$Codigo_Pais=="CRI"), which(names(datos)=="Regulacion_intercambio") ]<-1
#Sin regulación
pred_int_sin_tarj_bic_ef_sin_reg<-predict(modelo_int_sin_tarj_bic_ef, newdata = datos, interval = "prediction",
                                           level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
#Con regulación
pred_int_sin_tarj_bic_ef_con_reg<-predict(modelo_int_sin_tarj_bic_ef, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

# Visualización
stargazer(modelo_int_sin_tarj_bic_ef, type = "html", 
          title = "Regresión sobre la tasa de intercambio según BIC con efectos fijos de tiempo, sin variables de uso de tarjetas", 
          column.labels = c("MCO"), model.names = F, 
          dep.var.labels = c("Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
Regresión sobre la tasa de intercambio según BIC con efectos fijos de tiempo, sin variables de uso de tarjetas
Variable dependiente
Tasa intercambio
MCO
Regulacion_intercambio -0.570***
(0.073)
Año_2011 0.453
(0.353)
Año_2012 0.195
(0.372)
Año_2013 0.218
(0.316)
Año_2014 0.351
(0.324)
Año_2015 0.363
(0.326)
Año_2016 0.372
(0.322)
Año_2017 0.257
(0.315)
Año_2018 0.376
(0.319)
Año_2019 0.407
(0.316)
Año_2020 0.347
(0.315)
Año_2021 0.245
(0.321)
Año_2022 0.160
(0.347)
Crimen -0.021***
(0.005)
Densidad_Pob -0.0004***
(0.0001)
ICH -1.934***
(0.458)
Europa -0.321***
(0.077)
Am_lat 0.587***
(0.103)
Constant 2.560***
(0.438)
Observations 160
R2 0.772
Adjusted R2 0.743
Residual Std. Error 0.302 (df = 141)
F Statistic 26.528*** (df = 18; 141)
Note: p<0.1; p<0.05; p<0.01

2.11 Regresión con variables instrumentales:

datos_int<-datos %>% dplyr::select(-Adquirencia) %>% na.omit()
#Sin los efectos del tiempo:
modelo_iv_int<-ivreg(formula = Intercambio ~ Valor_prom + Regulacion_intercambio + Crimen + Densidad_Pob + Densidad_Neg +  PIB_pc_PPA + Europa + Asia_Este + Am_lat | Regulacion_intercambio + Crimen + Densidad_Pob + Densidad_Neg + PIB_pc_PPA + Europa + Asia_Este + Am_lat + ICH, data = datos_int)

# Prueba de Hausman:
# Al realizar la prueba de Hausman vemos que el valor en p-value es menor a 0.05,lo cual aceptamos la hipótesis alternativa, esto quiere decir que existe endogenidad.
summary(modelo_iv_int, diagnostics = TRUE)
## 
## Call:
## ivreg(formula = Intercambio ~ Valor_prom + Regulacion_intercambio + 
##     Crimen + Densidad_Pob + Densidad_Neg + PIB_pc_PPA + Europa + 
##     Asia_Este + Am_lat | Regulacion_intercambio + Crimen + Densidad_Pob + 
##     Densidad_Neg + PIB_pc_PPA + Europa + Asia_Este + Am_lat + 
##     ICH, data = datos_int)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.96118 -0.19126 -0.01449  0.24219  1.12294 
## 
## Coefficients:
##                          Estimate Std. Error t value Pr(>|t|)    
## (Intercept)             1.150e+00  2.923e-01   3.936 0.000133 ***
## Valor_prom              9.074e-03  2.654e-03   3.419 0.000837 ***
## Regulacion_intercambio -5.266e-01  7.797e-02  -6.754 4.17e-10 ***
## Crimen                 -8.701e-03  5.998e-03  -1.451 0.149260    
## Densidad_Pob           -1.276e-03  3.045e-04  -4.192 5.03e-05 ***
## Densidad_Neg            1.337e-02  9.859e-03   1.356 0.177353    
## PIB_pc_PPA              3.039e-07  2.706e-06   0.112 0.910756    
## Europa                 -6.732e-01  1.614e-01  -4.170 5.49e-05 ***
## Asia_Este              -7.498e-01  2.641e-01  -2.839 0.005243 ** 
## Am_lat                  2.697e-01  1.804e-01   1.495 0.137255    
## 
## Diagnostic tests:
##                  df1 df2 statistic  p-value    
## Weak instruments   1 132     30.67 1.59e-07 ***
## Wu-Hausman         1 131     18.50 3.29e-05 ***
## Sargan             0  NA        NA       NA    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.3909 on 132 degrees of freedom
## Multiple R-Squared: 0.6222,  Adjusted R-squared: 0.5965 
## Wald test: 30.42 on 9 and 132 DF,  p-value: < 2.2e-16
#Errores estándar robustos
coeftest(modelo_iv_int, vcov.=vcovHAC(modelo_iv_int))
## 
## t test of coefficients:
## 
##                           Estimate  Std. Error t value  Pr(>|t|)    
## (Intercept)             1.1503e+00  3.2957e-01  3.4905 0.0006561 ***
## Valor_prom              9.0744e-03  4.3347e-03  2.0934 0.0382225 *  
## Regulacion_intercambio -5.2656e-01  1.0051e-01 -5.2391 6.215e-07 ***
## Crimen                 -8.7009e-03  8.2604e-03 -1.0533 0.2941150    
## Densidad_Pob           -1.2764e-03  3.9229e-04 -3.2538 0.0014463 ** 
## Densidad_Neg            1.3371e-02  1.1772e-02  1.1359 0.2580761    
## PIB_pc_PPA              3.0388e-07  3.4528e-06  0.0880 0.9300014    
## Europa                 -6.7320e-01  1.6779e-01 -4.0122 0.0001002 ***
## Asia_Este              -7.4982e-01  3.7412e-01 -2.0042 0.0470919 *  
## Am_lat                  2.6966e-01  2.7926e-01  0.9656 0.3360062    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#Como la probabilidad asociada es menor al nivel de significancia de la prueba de Wu-Hausman, determina que hay #endogenidad. Es decir, hay correlación entre las variables y el término de error y por lo tanto, la variable ICH #no es un instrumento débil.

# Agregando efectos de tiempo:  
modelo_iv_int_ef<-ivreg(formula = Intercambio ~ Valor_prom + Regulacion_intercambio + Crimen + Densidad_Pob + Densidad_Neg +  PIB_pc_PPA + Europa + Asia_Este + Am_lat + Año_2012 + Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 | Regulacion_intercambio + Crimen + Densidad_Pob + Densidad_Neg + PIB_pc_PPA + Europa + Asia_Este + Am_lat + ICH + Año_2012 + Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021, data = datos)

# Prueba de Hausman:
# Al realizar la prueba de Hausman vemos que el valor en p-value es menor a 0.05,lo cual aceptamos la hipótesis alternativa, esto quiere decir que existe endogenidad.
summary(modelo_iv_int_ef, diagnostics = TRUE)
## 
## Call:
## ivreg(formula = Intercambio ~ Valor_prom + Regulacion_intercambio + 
##     Crimen + Densidad_Pob + Densidad_Neg + PIB_pc_PPA + Europa + 
##     Asia_Este + Am_lat + Año_2012 + Año_2013 + Año_2014 + 
##     Año_2015 + Año_2016 + Año_2017 + Año_2018 + Año_2019 + 
##     Año_2020 + Año_2021 | Regulacion_intercambio + Crimen + 
##     Densidad_Pob + Densidad_Neg + PIB_pc_PPA + Europa + Asia_Este + 
##     Am_lat + ICH + Año_2012 + Año_2013 + Año_2014 + Año_2015 + 
##     Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + 
##     Año_2021, data = datos)
## 
## Residuals:
##        Min         1Q     Median         3Q        Max 
## -8.975e-01 -2.187e-01  2.887e-15  2.100e-01  9.981e-01 
## 
## Coefficients:
##                          Estimate Std. Error t value Pr(>|t|)    
## (Intercept)             9.585e-01  3.764e-01   2.546 0.012123 *  
## Valor_prom              8.263e-03  2.670e-03   3.095 0.002438 ** 
## Regulacion_intercambio -5.386e-01  1.066e-01  -5.050 1.55e-06 ***
## Crimen                 -9.518e-03  6.137e-03  -1.551 0.123517    
## Densidad_Pob           -1.158e-03  3.027e-04  -3.826 0.000206 ***
## Densidad_Neg            1.437e-02  9.990e-03   1.438 0.152933    
## PIB_pc_PPA              4.136e-07  2.780e-06   0.149 0.882004    
## Europa                 -5.947e-01  1.693e-01  -3.512 0.000623 ***
## Asia_Este              -6.939e-01  2.600e-01  -2.669 0.008634 ** 
## Am_lat                  3.131e-01  1.827e-01   1.714 0.089069 .  
## Año_2012                4.543e-02  4.541e-01   0.100 0.920460    
## Año_2013                1.098e-01  2.411e-01   0.455 0.649626    
## Año_2014                2.174e-01  2.551e-01   0.852 0.395633    
## Año_2015                2.440e-01  2.567e-01   0.950 0.343774    
## Año_2016                3.042e-01  2.428e-01   1.253 0.212670    
## Año_2017                1.136e-01  2.113e-01   0.537 0.592003    
## Año_2018                2.119e-01  2.324e-01   0.912 0.363521    
## Año_2019                2.863e-01  2.264e-01   1.265 0.208402    
## Año_2020                2.587e-01  2.296e-01   1.127 0.261877    
## Año_2021                2.328e-01  2.358e-01   0.987 0.325400    
## 
## Diagnostic tests:
##                  df1 df2 statistic  p-value    
## Weak instruments   1 123     28.19 4.95e-07 ***
## Wu-Hausman         1 122     14.19 0.000255 ***
## Sargan             0  NA        NA       NA    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.3837 on 123 degrees of freedom
## Multiple R-Squared: 0.6625,  Adjusted R-squared: 0.6104 
## Wald test: 15.19 on 19 and 123 DF,  p-value: < 2.2e-16
coeftest(modelo_iv_int_ef, vcov.=vcovHAC(modelo_iv_int_ef))
## 
## t test of coefficients:
## 
##                           Estimate  Std. Error t value Pr(>|t|)   
## (Intercept)             9.5849e-01  4.3678e-01  2.1944 0.030082 * 
## Valor_prom              8.2633e-03  4.2269e-03  1.9549 0.052858 . 
## Regulacion_intercambio -5.3859e-01  1.7061e-01 -3.1568 0.002006 **
## Crimen                 -9.5179e-03  8.8175e-03 -1.0794 0.282507   
## Densidad_Pob           -1.1583e-03  4.1448e-04 -2.7946 0.006029 **
## Densidad_Neg            1.4367e-02  1.2322e-02  1.1660 0.245867   
## PIB_pc_PPA              4.1357e-07  3.1205e-06  0.1325 0.894781   
## Europa                 -5.9469e-01  2.0414e-01 -2.9131 0.004251 **
## Asia_Este              -6.9389e-01  3.9379e-01 -1.7621 0.080542 . 
## Am_lat                  3.1308e-01  2.6506e-01  1.1812 0.239821   
## Año_2012                4.5433e-02  3.7561e-01  0.1210 0.903922   
## Año_2013                1.0979e-01  3.3257e-01  0.3301 0.741868   
## Año_2014                2.1745e-01  3.2414e-01  0.6708 0.503581   
## Año_2015                2.4400e-01  2.7236e-01  0.8959 0.372073   
## Año_2016                3.0419e-01  3.0787e-01  0.9881 0.325064   
## Año_2017                1.1356e-01  2.6711e-01  0.4251 0.671478   
## Año_2018                2.1195e-01  2.7678e-01  0.7658 0.445278   
## Año_2019                2.8634e-01  2.8388e-01  1.0087 0.315117   
## Año_2020                2.5874e-01  2.6651e-01  0.9709 0.333528   
## Año_2021                2.3284e-01  2.9691e-01  0.7842 0.434426   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#Pronósticos para Costa Rica
#Sin regulación
pred_iv_int_sin_reg<-predict(modelo_iv_int, newdata = datos,
                                   interval = "prediction", level = 0.95,
                                   type = "response")[which(datos$Codigo_Pais=="CRI")]

pred_iv_int_ef_sin_reg<-predict(modelo_iv_int_ef, newdata = datos,
                                   interval = "prediction", level = 0.95,
                                   type = "response")[which(datos$Codigo_Pais=="CRI")]

#Con regulación
# data_CR: se le asigna a CR la regulación.
pred_iv_int_con_reg <- predict(modelo_iv_int, newdata = data_CR,
                                   interval = "prediction", level = 0.95,
                                   type = "response")[which(data_CR$Codigo_Pais=="CRI")]

pred_iv_int_ef_con_reg <- predict(modelo_iv_int_ef, newdata = data_CR,
                                   interval = "prediction", level = 0.95,
                                   type = "response")[which(data_CR$Codigo_Pais=="CRI")]

2.12 Pruebas estadísticas a regresiones tasa de intercambio

2.12.1 Modelo sin controles

### Modelo sin controles.
#modelo_int_sin_cont

#Prueba de normalidad
#Se guardan los residuos
residuos_modelo_int_sin_cont<-resid(modelo_int_sin_cont)
#Se computa la prueba con la función Nula: distribución normal residuos
jarque.test(residuos_modelo_int_sin_cont)
## 
##  Jarque-Bera Normality Test
## 
## data:  residuos_modelo_int_sin_cont
## JB = 16.908, p-value = 0.000213
## alternative hypothesis: greater
car::qqPlot(modelo_int_sin_cont)

## [1] 5 6
#Se obtiene el resultado del índice de condición de multicolinealidad
#create vector of VIF values no tiene sentido sin controles
#vif(modelo_int_sin_cont)

#Se ejecuta el test de White sobre el modelo original Nula: homocedasticidad
white_lm(modelo_int_sin_cont, interactions = TRUE)
statistic p.value parameter method alternative
0.8154485 0.6651623 2 White’s Test greater
#Prueba de especificación lineal RESET Nula: especificación correcta lineal.
#resettest(modelo_int_sin_cont, power = 2:3, type = c("fitted"), data = datos)#No se realiza porque solo tiene una dummy

2.12.2 Modelo AICc sin efectos fijos de tiempo

#modelo_int_con_cont_aicc

#Prueba de normalidad
#Se guardan los residuos
residuos_modelo_int_con_cont_aicc<-resid(modelo_int_con_cont_aicc)
#Se computa la prueba con la función Nula: distribución normal residuos
jarque.test(residuos_modelo_int_con_cont_aicc)
## 
##  Jarque-Bera Normality Test
## 
## data:  residuos_modelo_int_con_cont_aicc
## JB = 38.34, p-value = 4.727e-09
## alternative hypothesis: greater
car::qqPlot(modelo_int_con_cont_aicc)

## [1] 19 46
#Se obtiene el resultado del índice de condición de multicolinealidad
#create vector of VIF values
vif(modelo_int_con_cont_aicc)
## Regulacion_intercambio           Cajero_Autom                 Crimen 
##               1.275732               1.278343               2.891041 
##                 Cuenta                 Debito           Densidad_Pob 
##               5.200148               4.304164               1.517066 
##                    ICH                 Europa              Asia_Este 
##               3.225181               3.446849               2.113511
#Se ejecuta el test de White sobre el modelo original Nula: homocedasticidad
white_lm(modelo_int_con_cont_aicc, interactions = TRUE)
statistic p.value parameter method alternative
57.00614 0.3639272 54 White’s Test greater
plot(modelo_int_con_cont_aicc$fit,modelo_int_con_cont_aicc$res,xlab="Valores ajustados",ylab="Residuales")

#Prueba de especificación lineal RESET Nula: especificación correcta lineal
resettest(modelo_int_con_cont_aicc, power = 2:3, type = c("fitted"), data = datos, vcov = vcovHC)#Corregido por heterocedasticidad)
## 
##  RESET test
## 
## data:  modelo_int_con_cont_aicc
## RESET = 2.2048, df1 = 2, df2 = 132, p-value = 0.1144

2.12.3 Modelo AICc con efectos fijos de tiempo:

#modelo_int_con_cont_ef_aicc

#Prueba de normalidad
#Se guardan los residuos
residuos_modelo_int_con_cont_ef_aicc<-resid(modelo_int_con_cont_ef_aicc)
#Se computa la prueba con la función Nula: distribución normal residuos
jarque.test(residuos_modelo_int_con_cont_ef_aicc)
## 
##  Jarque-Bera Normality Test
## 
## data:  residuos_modelo_int_con_cont_ef_aicc
## JB = 31.971, p-value = 1.142e-07
## alternative hypothesis: greater
car::qqPlot(residuos_modelo_int_con_cont_ef_aicc)

## [1] 19 46
#Se obtiene el resultado del índice de condición de multicolinealidad no aplica para dummies extra
#create vector of VIF values
#vif(modelo_int_con_cont_ef_aicc)

#Se ejecuta el test de White sobre el modelo original Nula: homocedasticidad
white_lm(modelo_int_con_cont_ef_aicc, interactions = TRUE)
statistic p.value parameter method alternative
102.5602 1 189 White’s Test greater
#Prueba de especificación lineal RESET Nula: especificación correcta lineal
#resettest(modelo_int_con_cont_ef_aicc, power = 2:3, type = c("fitted"), data = datos, vcov = vcovHC)#No se realiza porque solo incluye extra los efectos fijos

2.12.4 Modelo BIC sin efectos fijos de tiempo

#modelo_int_con_cont_bic
#Prueba de normalidad
#Se guardan los residuos
residuos_modelo_int_con_cont_bic<-resid(modelo_int_con_cont_bic)
#Se computa la prueba con la función Nula: distribución normal residuos
jarque.test(residuos_modelo_int_con_cont_bic)
## 
##  Jarque-Bera Normality Test
## 
## data:  residuos_modelo_int_con_cont_bic
## JB = 34.846, p-value = 2.712e-08
## alternative hypothesis: greater
#Se obtiene el resultado del índice de condición de multicolinealidad
#create vector of VIF values
vif(modelo_int_con_cont_bic)
## Regulacion_intercambio                 Crimen                 Cuenta 
##               1.264535               2.890730               4.924249 
##                 Debito           Densidad_Pob                    ICH 
##               4.274984               1.456842               3.075398 
##                 Europa              Asia_Este 
##               3.234129               2.083849
#Se ejecuta el test de White sobre el modelo original Nula: homocedasticidad
white_lm(modelo_int_con_cont_bic, interactions = TRUE)
statistic p.value parameter method alternative
50.17082 0.2420559 44 White’s Test greater
#Prueba de especificación lineal RESET Nula: especificación correcta lineal
resettest(modelo_int_con_cont_bic, power = 2:3, type = c("fitted"), data = datos, vcov = vcovHC)#Corregido por heterocedasticidad)
## 
##  RESET test
## 
## data:  modelo_int_con_cont_bic
## RESET = 2.5988, df1 = 2, df2 = 133, p-value = 0.0782

2.12.5 Modelo BIC con efectos fijos de tiempo

modelo_int_con_cont_bic_ef=modelo_int_con_cont_ef_bic

#Prueba de normalidad
#Se guardan los residuos
residuos_modelo_int_con_cont_bic_ef<-resid(modelo_int_con_cont_bic_ef)
#Se computa la prueba con la función Nula: distribución normal residuos
jarque.test(residuos_modelo_int_con_cont_bic_ef)
## 
##  Jarque-Bera Normality Test
## 
## data:  residuos_modelo_int_con_cont_bic_ef
## JB = 31.716, p-value = 1.297e-07
## alternative hypothesis: greater
#Se obtiene el resultado del índice de condición de multicolinealidad no aplica para dummies extra
#create vector of VIF values
#vif(modelo_int_con_cont_bic_ef)

#Se ejecuta el test de White sobre el modelo original Nula: homocedasticidad
white_lm(modelo_int_con_cont_bic_ef, interactions = TRUE)
statistic p.value parameter method alternative
82.85371 0.9999991 152 White’s Test greater
#Prueba de especificación lineal RESET Nula: especificación correcta lineal
#resettest(modelo_int_con_cont_bic_ef, power = 2:3, type = c("fitted"), data = datos, vcov = vcovHC)#No se realiza porque solo incluye extra los efectos fijos

2.12.6 Modelo con variables instrumentales sin efectos fijos de tiempo

#modelo_iv_int

#Prueba de normalidad
#Se guardan los residuos
residuos_modelo_iv_int<-resid(modelo_iv_int)
#Se computa la prueba con la función Nula: distribución normal residuos
jarque.test(residuos_modelo_iv_int)
## 
##  Jarque-Bera Normality Test
## 
## data:  residuos_modelo_iv_int
## JB = 1.3328, p-value = 0.5135
## alternative hypothesis: greater
#Se obtiene el resultado del índice de condición de multicolinealidad
#create vector of VIF values
vif(modelo_iv_int)
##             Valor_prom Regulacion_intercambio                 Crimen 
##               3.578201               1.384002               2.831645 
##           Densidad_Pob           Densidad_Neg             PIB_pc_PPA 
##               3.203458               2.115804               2.114991 
##                 Europa              Asia_Este                 Am_lat 
##               5.909028               5.390562               5.503532
#Se ejecuta el test de White sobre el modelo original Nula: homocedasticidad (no aplica para IVreg). Se usaron errores estándar robustos anteriormente
#white_lm(modelo_iv_int, interactions = TRUE)

#Prueba de especificación lineal RESET Nula: especificación correcta lineal
resettest(modelo_iv_int, power = 2:3, type = c("fitted"), data = datos, vcov = vcovHC)#Corregido por heterocedasticidad)
## 
##  RESET test
## 
## data:  modelo_iv_int
## RESET = 0.14121, df1 = 2, df2 = 132, p-value = 0.8684

2.12.7 Modelo con variables instrumentales con efectos fijos de tiempo

#modelo_iv_int_ef

#Prueba de normalidad
#Se guardan los residuos
residuos_modelo_iv_int_ef<-resid(modelo_iv_int_ef)
#Se computa la prueba con la función Nula: distribución normal residuos
jarque.test(residuos_modelo_iv_int_ef)
## 
##  Jarque-Bera Normality Test
## 
## data:  residuos_modelo_iv_int_ef
## JB = 0.77197, p-value = 0.6798
## alternative hypothesis: greater
#Se obtiene el resultado del índice de condición de multicolinealidad no aplica a dummies extra
#create vector of VIF values
#vif(modelo_iv_int_ef)

#Se ejecuta el test de White sobre el modelo original Nula: homocedasticidad no aplica a IVreg. Se usaron errores estándar robustos anteriormente
#white_lm(modelo_iv_int_ef, interactions = TRUE)

#Prueba de especificación lineal RESET Nula: especificación correcta lineal
#resettest(modelo_iv_int_ef, power = 2:3, type = c("fitted"), data = datos, vcov = vcovHC)#No se realiza porque solo incluye extra los efectos fijos

3 Regresiones tasa de adquirencia

De manera similar al caso de la comisión de intercambio, se llevan a cabo múltiples especificaciones de regresión lineal para determinar la tasa de adquirencia esperada para Costa Rica. Primero, se realizan estimaciones sin variables de control. Posteriormente, se utilizan criterios de información para seleccionar los controles a partir de una comparación entre la bondad de ajuste y la complejidad del modelo. En particular, estos criterios de información son el criterio de información de Akaike con una corrección para tamaños de muestra pequeños (AICc) y el criterio de información bayesiana (BIC).

# Se carga la base otra vez para analizar adquirencia.
datos <- read_excel("Base_datos_adquirencia_intercambio.xlsx")

3.1 Modelos base, AICc y BIC

La cantidad de países con información de la tasa de adquierencia en la muestra es la siguiente:

misc<-datos %>% dplyr::select(c("Pais","Codigo_Pais","Año","Adquirencia")) %>% na.omit()
misc<-misc[!duplicated(misc[,1]),]
#Se elimina Costa Rica
misc<-misc[misc$Codigo_Pais!="CRI",]
#Cantidad de países con información de la tasa de adquirencia en la muestra
nrow(misc)
## [1] 40
#Con toda la muestra sin logaritmo

#Regresión sin controles ----
modelo_adq_sin_cont<-lm(Adquirencia ~ Regulacion_intercambio, datos)

modelo_adq_sin_cont_corr_hc<-coeftest(modelo_adq_sin_cont, vcov. = vcovHC(modelo_adq_sin_cont, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_adq_sin_cont_corr_hac<-coeftest(modelo_adq_sin_cont, vcov. = vcovHAC(modelo_adq_sin_cont, adjust = TRUE, sandwich = TRUE))

stargazer(modelo_adq_sin_cont, modelo_adq_sin_cont_corr_hc, modelo_adq_sin_cont_corr_hac, type = "html", title = "Regresión sobre la tasa de adquirencia sin controles", 
          column.labels = c("MCO","MCO HC", "MCO HAC"), model.names = F, dep.var.labels = c("Tasa adquirencia", "Tasa adquirencia", "Tasa adquirencia"), dep.var.caption = "Variable dependiente")
Regresión sobre la tasa de adquirencia sin controles
Variable dependiente
Tasa adquirencia Tasa adquirencia
MCO MCO HC MCO HAC
(1) (2) (3)
Regulacion_intercambio -1.139*** -1.139*** -1.139***
(0.136) (0.137) (0.302)
Constant 2.382*** 2.382*** 2.382***
(0.098) (0.104) (0.214)
Observations 110
R2 0.392
Adjusted R2 0.387
Residual Std. Error 0.715 (df = 108)
F Statistic 69.739*** (df = 1; 108)
Note: p<0.1; p<0.05; p<0.01
#Pronóstico para CR
#Sin regulación
pred_adq_sin_cont_sin_reg<-predict(modelo_adq_sin_cont, newdata = datos, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

#Con regulación
data_CR<-datos
data_CR[ which(datos$Codigo_Pais=="CRI"), which(names(datos)=="Regulacion_intercambio") ]<-1 # le pone a CRI reg por adquirencia para generar un pronóstico.
pred_adq_sin_cont_con_reg<-predict(modelo_adq_sin_cont, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[ which(data_CR$Codigo_Pais=="CRI")]

#Regresión con todos los controles ----
attach(datos)
## The following objects are masked from datos (pos = 6):
## 
##     Adquirencia, Am_lat, Año, Año_2010, Año_2011, Año_2012, Año_2013,
##     Año_2014, Año_2015, Año_2016, Año_2017, Año_2018, Año_2019,
##     Año_2020, Año_2021, Año_2022, Asia_Este, Cajero_Autom, Codigo_Pais,
##     Credito, Crimen, Cuenta, Dato_mas_reciente, Debito, Densidad_Neg,
##     Densidad_Pob, EEE, Europa, ICH, Intercambio, OCDE, Pago_digital,
##     Pais, PIB_pc_PPA, Regulacion_adquirencia, Regulacion_intercambio,
##     Valor_prom
modelo_adq_con_cont<-lm(Adquirencia ~ Regulacion_intercambio + Cajero_Autom +
                          Crimen + Cuenta + Debito + Credito + Densidad_Pob +
                          Densidad_Neg + PIB_pc_PPA + ICH + Europa + Asia_Este + 
                          Am_lat + Valor_prom + Pago_digital, data = datos)

modelo_adq_con_cont_corr_hc<-coeftest(modelo_adq_con_cont, vcov. = vcovHC(modelo_adq_con_cont, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_adq_con_cont_corr_hac<-coeftest(modelo_adq_con_cont, vcov. = vcovHAC(modelo_adq_con_cont, adjust = TRUE, sandwich = TRUE))

#stargazer(modelo_adq_con_cont, modelo_adq_con_cont_corr_hc, modelo_adq_con_cont_corr_hac, type = "html", title = "Regresión sobre la tasa de adquirencia para con todos los controles", 
#          column.labels = c("MCO","MCO HC", "MCO HAC"), model.names = F, dep.var.labels = c("Tasa adquirencia", "Tasa adquirencia", "Tasa adquirencia"), dep.var.caption = "Variable dependiente")
#Pronóstico para CR
#Sin regulación
pred_adq_con_cont_sin_reg<-predict(modelo_adq_con_cont, newdata = datos, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
#Con regulación
data_CR<-datos
data_CR[ which(datos$Codigo_Pais=="CRI"), which(names(datos)=="Regulacion_intercambio") ]<-1
pred_adq_con_cont_con_reg<-predict(modelo_adq_con_cont, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

#Regresión con todos los controles más efectos fijos de tiempo
modelo_adq_con_cont_ef<-lm(Adquirencia ~ Regulacion_intercambio + Cajero_Autom +
                          Crimen + Cuenta + Pago_digital + Debito + Credito + Densidad_Pob +
                          Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom + Europa + 
                            Asia_Este + Am_lat + Año_2010 + Año_2011 + Año_2012 + 
                            Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + 
                            Año_2018 + Año_2019 + Año_2020 + Año_2021 + Año_2022, 
                            datos)

modelo_adq_con_cont_ef_corr_hc<-coeftest(modelo_adq_con_cont_ef, vcov. = vcovHC(modelo_adq_con_cont_ef, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_adq_con_cont_ef_corr_hac<-coeftest(modelo_adq_con_cont_ef, vcov. = vcovHAC(modelo_adq_con_cont_ef, adjust = TRUE, sandwich = TRUE))


#stargazer(modelo_adq_con_cont_ef, modelo_adq_con_cont_ef_corr_hc, type = "html", 
#          title = "Regresión sobre la tasa de adquirencia con controles y efectos fijos de tiempo", 
#          column.labels = c("MCO","MCO HC"), model.names = F, 
#          dep.var.labels = c("Tasa adquirencia", "Tasa adquirencia"), dep.var.caption = "Variable dependiente")

#Pronóstico para CR
#Sin regulación
pred_adq_con_cont_ef_sin_reg<-predict(modelo_adq_con_cont_ef, newdata = datos, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

#Con regulación
data_CR<-datos
data_CR[ which(datos$Codigo_Pais=="CRI"), which(names(datos)=="Regulacion_intercambio") ]<-1
pred_adq_con_cont_ef_con_reg<-predict(modelo_adq_con_cont_ef, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
  • Selección de variables mediante AICc sin efectos fijos de tiempo:
#Seleccionar el modelo utilizando el AICc (corrige por tamaño de muestra pequeña)
#Se elimina la variable intercambio de los datos para evitar sus NAs
datos_adq<-datos %>% dplyr::select(-Intercambio) %>% na.omit()

modelo_adq_con_cont_aicc<-lm(Adquirencia ~ Regulacion_intercambio + Cajero_Autom +
                          Crimen + Cuenta + Pago_digital + Debito + Credito + Densidad_Pob +
                          Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom + Europa + 
                            Asia_Este + Am_lat, datos_adq)

variables_controles<-c("Regulacion_intercambio", "Cajero_Autom", "Crimen", "Cuenta", "Pago_digital", "Debito", "Credito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH", "Valor_prom", "Europa", "Asia_Este", "Am_lat")

controles<- datos_adq %>% dplyr::select(c(variables_controles)) %>% as.matrix()

#Paso 1
AICC<-c()
AICC[1]<-aicc(modelo_adq_con_cont_aicc)

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la columna 6
controles<-controles[,-which.min(AICC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Debito’”

variables_controles<-variables_controles[-which.min(AICC)]

#Paso 2
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la columna 14
controles<-controles[,-which.min(AICC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Am_lat’”

variables_controles<-variables_controles[-which.min(AICC)]

#Paso 3
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la columna 9
controles<-controles[,-which.min(AICC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))

[1] “Se elimina por este criterio la variable: ‘PIB_pc_PPA’”

variables_controles<-variables_controles[-which.min(AICC)]

#Paso 4
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la columna 6
controles<-controles[,-which.min(AICC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Credito’”

variables_controles<-variables_controles[-which.min(AICC)]

#Paso 5
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la columna 5
controles<-controles[,-which.min(AICC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Pago_digital’”

variables_controles<-variables_controles[-which.min(AICC)]

#Paso 6
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la columna 5
controles<-controles[,-which.min(AICC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Densidad_Pob’”

variables_controles<-variables_controles[-which.min(AICC)]

#Paso 7
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la columna 5
controles<-controles[,-which.min(AICC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Densidad_Neg’”

variables_controles<-variables_controles[-which.min(AICC)]

#Paso 8
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la columna 8
controles<-controles[,-which.min(AICC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Asia_Este’”

variables_controles<-variables_controles[-which.min(AICC)]

#Paso 9
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la columna 2
controles<-controles[,-which.min(AICC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Cajero_Autom’”

variables_controles<-variables_controles[-which.min(AICC)]

#Paso 10
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

min(AICC)<AICC[1]

[1] FALSE

# El AICC ya no es menor, entonces no se eliminan columnas
controles1<-controles
print(paste0("El criterio deja las siguientes variables: ","'",variables_controles,"' "))

[1] “El criterio deja las siguientes variables: ‘Regulacion_intercambio’” [2] “El criterio deja las siguientes variables: ‘Crimen’”
[3] “El criterio deja las siguientes variables: ‘Cuenta’”
[4] “El criterio deja las siguientes variables: ‘ICH’”
[5] “El criterio deja las siguientes variables: ‘Valor_prom’”
[6] “El criterio deja las siguientes variables: ‘Europa’”

#variables a usar
modelo_adq_con_cont_aicc<-lm(Adquirencia ~ Regulacion_intercambio + Crimen + Cuenta + ICH + Valor_prom + Europa, datos_adq)

modelo_adq_con_cont_aicc_corr_hc<-coeftest(modelo_adq_con_cont_aicc, vcov. = vcovHC(modelo_adq_con_cont_aicc, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_adq_con_cont_aicc_corr_hac<-coeftest(modelo_adq_con_cont_aicc, vcov. = vcovHAC(modelo_adq_con_cont_aicc, adjust = TRUE, sandwich = TRUE))

stargazer(modelo_adq_con_cont_aicc, modelo_adq_con_cont_aicc_corr_hc, type = "html", 
          title = "Regresión sobre la tasa de adquirencia según AICc", 
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa adquirencia", "Tasa adquirencia"), dep.var.caption = "Variable dependiente")
Regresión sobre la tasa de adquirencia según AICc
Variable dependiente
Tasa adquirencia Tasa adquirencia
MCO MCO HC
(1) (2)
Regulacion_intercambio -0.580*** -0.580***
(0.131) (0.133)
Crimen -0.016** -0.016
(0.008) (0.011)
Cuenta -0.015*** -0.015***
(0.004) (0.003)
ICH -2.672** -2.672*
(1.066) (1.437)
Valor_prom -0.005*** -0.005***
(0.002) (0.002)
Europa -0.602*** -0.602***
(0.146) (0.130)
Constant 5.708*** 5.708***
(0.736) (1.079)
Observations 87
R2 0.728
Adjusted R2 0.707
Residual Std. Error 0.497 (df = 80)
F Statistic 35.619*** (df = 6; 80)
Note: p<0.1; p<0.05; p<0.01
  • Selección de variables mediante BIC sin efectos fijos de tiempo:
#Seleccionar el modelo utilizando el BIC
modelo_adq_con_cont_bic<-lm(Adquirencia ~ Regulacion_intercambio + Cajero_Autom +
                          Crimen + Cuenta + Pago_digital + Debito + Credito + Densidad_Pob +
                          Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom + Europa + 
                            Asia_Este + Am_lat, datos_adq)

variables_controles<-c("Regulacion_intercambio", "Cajero_Autom", "Crimen", "Cuenta", "Pago_digital", "Debito", "Credito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH", "Valor_prom", "Europa", "Asia_Este", "Am_lat")

controles<- datos_adq %>% dplyr::select(c(variables_controles)) %>% as.matrix()
#Paso 1
BIC<-c()
BIC[1]<-BIC(modelo_adq_con_cont_bic)

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la columna 6
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Debito’”

variables_controles<-variables_controles[-which.min(BIC)]

#Paso 2
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la columna 14
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Am_lat’”

variables_controles<-variables_controles[-which.min(BIC)]

#Paso 3
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la columna 9
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))

[1] “Se elimina por este criterio la variable: ‘PIB_pc_PPA’”

variables_controles<-variables_controles[-which.min(BIC)]

#Paso 4
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la columna 6
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Credito’”

variables_controles<-variables_controles[-which.min(BIC)]

#Paso 5
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la columna 5
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Pago_digital’”

variables_controles<-variables_controles[-which.min(BIC)]

#Paso 6
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la columna 5
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Densidad_Pob’”

variables_controles<-variables_controles[-which.min(BIC)]

#Paso 7
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la columna 5
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Densidad_Neg’”

variables_controles<-variables_controles[-which.min(BIC)]

#Paso 8
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la columna 8
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Asia_Este’”

variables_controles<-variables_controles[-which.min(BIC)]

#Paso 9
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la columna 2
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Cajero_Autom’”

variables_controles<-variables_controles[-which.min(BIC)]

#Paso 10
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la columna 2
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Crimen’”

variables_controles<-variables_controles[-which.min(BIC)]

#Paso 11
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la columna 3
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))

[1] “Se elimina por este criterio la variable: ‘ICH’”

variables_controles<-variables_controles[-which.min(BIC)]

#Paso 12
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

min(BIC)<BIC[1]

[1] FALSE

#Ya no se eliminan columnas
controles2<-controles

#variables a usar
print(paste0("Este criterio deja las siguientes variables: ",variables_controles))

[1] “Este criterio deja las siguientes variables: Regulacion_intercambio” [2] “Este criterio deja las siguientes variables: Cuenta”
[3] “Este criterio deja las siguientes variables: Valor_prom”
[4] “Este criterio deja las siguientes variables: Europa”

# Estimación del modelo con lsa variables seleccionadas con BIC
modelo_adq_con_cont_bic<-lm(Adquirencia ~ Regulacion_intercambio + Cuenta + Valor_prom + Europa, datos_adq)

modelo_adq_con_cont_bic_corr_hc<-coeftest(modelo_adq_con_cont_bic, vcov. = vcovHC(modelo_adq_con_cont_bic, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_adq_con_cont_bic_corr_hac<-coeftest(modelo_adq_con_cont_bic, vcov. = vcovHAC(modelo_adq_con_cont_bic, adjust = TRUE, sandwich = TRUE))

stargazer(modelo_adq_con_cont_bic, modelo_adq_con_cont_bic_corr_hc, type = "html", title = "Regresión sobre la tasa de adquirencia según BIC", 
          column.labels = c("MCO","MCO HC"), model.names = F, dep.var.labels = c("Tasa adquirencia", "Tasa adquirencia"), dep.var.caption = "Variable dependiente")
Regresión sobre la tasa de adquirencia según BIC
Variable dependiente
Tasa adquirencia Tasa adquirencia
MCO MCO HC
(1) (2)
Regulacion_intercambio -0.663*** -0.663***
(0.129) (0.125)
Cuenta -0.017*** -0.017***
(0.003) (0.002)
Valor_prom -0.003** -0.003**
(0.002) (0.001)
Europa -0.602*** -0.602***
(0.141) (0.114)
Constant 3.847*** 3.847***
(0.259) (0.221)
Observations 87
R2 0.703
Adjusted R2 0.688
Residual Std. Error 0.512 (df = 82)
F Statistic 48.509*** (df = 4; 82)
Note: p<0.1; p<0.05; p<0.01
  • Selección de variables mediante AICc con efectos fijos de tiempo:
#Seleccionar el modelo utilizando el AICc (corrige por tamaño de muestra pequeña), más efectos fijos de tiempo
modelo_adq_con_cont_aicc_ef<-lm(Adquirencia ~ Regulacion_intercambio + Año_2010 + Año_2011 + Año_2012 +
                                  Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 +
                                  Año_2019 + Año_2020 + Año_2021 + Año_2022 + Cajero_Autom + Crimen + 
                                  Cuenta + Pago_digital + Debito + Credito + Densidad_Pob + 
                                  Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom + Europa +
                                  Asia_Este + Am_lat, datos_adq)

variables_controles<-c("Regulacion_intercambio", "Año_2010", "Año_2011", "Año_2012", "Año_2013",
                       "Año_2014", "Año_2015", "Año_2016", "Año_2017", "Año_2018", "Año_2019", "Año_2020",
                       "Año_2021", "Año_2022","Cajero_Autom", "Crimen", "Cuenta", "Pago_digital", "Debito",
                       "Credito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH", "Valor_prom",
                       "Europa", "Asia_Este", "Am_lat")

controles<- datos_adq %>% dplyr::select(c(variables_controles)) %>% as.matrix()

#Paso 1
AICC<-c()
AICC[1]<-aicc(modelo_adq_con_cont_aicc_ef)

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+13)], datos_adq))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+13],"' "))

[1] “Se elimina por este criterio la variable: ‘Asia_Este’”

variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 2
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+13)], datos_adq))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la columna 15
controles<-controles[,-(which.min(AICC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+13],"' "))

[1] “Se elimina por este criterio la variable: ‘Cajero_Autom’”

variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 3
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+13)], datos_adq))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+13],"' "))

[1] “Se elimina por este criterio la variable: ‘PIB_pc_PPA’”

variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 4
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+13)], datos_adq))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la columna 19
controles<-controles[,-(which.min(AICC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+13],"' "))

[1] “Se elimina por este criterio la variable: ‘Credito’”

variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 5
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+13)], datos_adq))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+13],"' "))

[1] “Se elimina por este criterio la variable: ‘Pago_digital’”

variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 6
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+13)], datos_adq))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+13],"' "))

[1] “Se elimina por este criterio la variable: ‘Densidad_Pob’”

variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 7
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+13)], datos_adq))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+13],"' "))

[1] “Se elimina por este criterio la variable: ‘Am_lat’”

variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 8
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+13)], datos_adq))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+13],"' "))

[1] “Se elimina por este criterio la variable: ‘Debito’”

variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 9
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+13)], datos_adq))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+13],"' "))

[1] “Se elimina por este criterio la variable: ‘Crimen’”

variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 10
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+13)], datos_adq))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+13],"' "))

[1] “Se elimina por este criterio la variable: ‘Densidad_Neg’”

variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 11
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+13)], datos_adq))  
}

min(AICC)<AICC[1]

[1] FALSE

#Ya no se eliminan columnas
controles3<-controles

#variables a usar
print(paste0("Este criterio deja las siguientes variables: ",variables_controles))

[1] “Este criterio deja las siguientes variables: Regulacion_intercambio” [2] “Este criterio deja las siguientes variables: Año_2010”
[3] “Este criterio deja las siguientes variables: Año_2011”
[4] “Este criterio deja las siguientes variables: Año_2012”
[5] “Este criterio deja las siguientes variables: Año_2013”
[6] “Este criterio deja las siguientes variables: Año_2014”
[7] “Este criterio deja las siguientes variables: Año_2015”
[8] “Este criterio deja las siguientes variables: Año_2016”
[9] “Este criterio deja las siguientes variables: Año_2017”
[10] “Este criterio deja las siguientes variables: Año_2018”
[11] “Este criterio deja las siguientes variables: Año_2019”
[12] “Este criterio deja las siguientes variables: Año_2020”
[13] “Este criterio deja las siguientes variables: Año_2021”
[14] “Este criterio deja las siguientes variables: Año_2022”
[15] “Este criterio deja las siguientes variables: Cuenta”
[16] “Este criterio deja las siguientes variables: ICH”
[17] “Este criterio deja las siguientes variables: Valor_prom”
[18] “Este criterio deja las siguientes variables: Europa”

# Estimación del modelo seleccionado
modelo_adq_con_cont_aicc_ef<-lm(Adquirencia ~ Regulacion_intercambio + Año_2010 + Año_2011 + Año_2012 +
                                  Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 +
                                  Año_2019 + Año_2020 + Año_2021 + Año_2022 + Cuenta + ICH + 
                                  Valor_prom + Europa, datos_adq)

modelo_adq_con_cont_aicc_ef_corr_hc<-coeftest(modelo_adq_con_cont_aicc_ef, vcov. = vcovHC(modelo_adq_con_cont_aicc_ef, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_adq_con_cont_aicc_ef_corr_hac<-coeftest(modelo_adq_con_cont_aicc_ef, vcov. = vcovHAC(modelo_adq_con_cont_aicc_ef, adjust = TRUE, sandwich = TRUE))

stargazer(modelo_adq_con_cont_aicc_ef, modelo_adq_con_cont_aicc_ef_corr_hc,
          type = "html", title = "Regresión sobre la tasa de adquirencia según AICc con efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa adquirencia", "Tasa adquirencia"), dep.var.caption = "Variable dependiente")
Regresión sobre la tasa de adquirencia según AICc con efectos fijos de tiempo
Variable dependiente
Tasa adquirencia Tasa adquirencia
MCO MCO HC
(1) (2)
Regulacion_intercambio -0.513*** -0.513***
(0.125) (0.140)
Año_2010
Año_2011
Año_2012
Año_2013 -2.031*** -2.031***
(0.517) (0.161)
Año_2014 -2.408*** -2.408***
(0.499) (0.121)
Año_2015 -2.254*** -2.254***
(0.490) (0.136)
Año_2016 -2.181*** -2.181***
(0.476) (0.182)
Año_2017 -2.282*** -2.282***
(0.468) (0.154)
Año_2018 -2.243*** -2.243***
(0.474) (0.210)
Año_2019 -2.426*** -2.426***
(0.470) (0.187)
Año_2020 -2.477*** -2.477***
(0.468) (0.177)
Año_2021 -2.639*** -2.639***
(0.486) (0.143)
Año_2022
Cuenta -0.013*** -0.013***
(0.003) (0.004)
ICH -1.469 -1.469
(0.901) (1.141)
Valor_prom -0.004*** -0.004**
(0.001) (0.002)
Europa -0.607*** -0.607***
(0.143) (0.159)
Constant 6.787*** 6.787***
(0.618) (0.529)
Observations 87
R2 0.806
Adjusted R2 0.769
Residual Std. Error 0.442 (df = 72)
F Statistic 21.415*** (df = 14; 72)
Note: p<0.1; p<0.05; p<0.01
  • Selección de variables mediante BIC con efectos fijos de tiempo:
#Seleccionar el modelo utilizando el BIC, más efectos fijos de tiempo
modelo_adq_con_cont_bic_ef<-lm(Adquirencia ~ Regulacion_intercambio + Año_2010 + Año_2011 + Año_2012 +
                                  Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 +
                                  Año_2019 + Año_2020 + Año_2021 + Año_2022 + Cajero_Autom + Crimen + 
                                  Cuenta + Pago_digital + Debito + Credito + Densidad_Pob + 
                                  Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom + Europa +
                                  Asia_Este + Am_lat, datos_adq)

variables_controles<-c("Regulacion_intercambio", "Año_2010", "Año_2011", "Año_2012", "Año_2013",
                       "Año_2014", "Año_2015", "Año_2016", "Año_2017", "Año_2018", "Año_2019", "Año_2020",
                       "Año_2021", "Año_2022","Cajero_Autom", "Crimen", "Cuenta", "Pago_digital", "Debito",
                       "Credito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH", "Valor_prom",
                       "Europa", "Asia_Este", "Am_lat")

controles<- datos_adq %>% dplyr::select(c(variables_controles)) %>% as.matrix()
#Paso 1
BIC<-c()
BIC[1]<-BIC(modelo_adq_con_cont_bic_ef)

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+13)], datos_adq))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la columna 27
controles<-controles[,-(which.min(BIC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+13],"' "))

[1] “Se elimina por este criterio la variable: ‘Asia_Este’”

variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 2
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+13)], datos_adq))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la columna 15
controles<-controles[,-(which.min(BIC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+13],"' "))

[1] “Se elimina por este criterio la variable: ‘Cajero_Autom’”

variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 3
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+13)], datos_adq))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la columna 22
controles<-controles[,-(which.min(BIC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+13],"' "))

[1] “Se elimina por este criterio la variable: ‘PIB_pc_PPA’”

variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 4
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+13)], datos_adq))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la columna 19
controles<-controles[,-(which.min(BIC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+13],"' "))

[1] “Se elimina por este criterio la variable: ‘Credito’”

variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 5
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+13)], datos_adq))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la columna 17
controles<-controles[,-(which.min(BIC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+13],"' "))

[1] “Se elimina por este criterio la variable: ‘Pago_digital’”

variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 6
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+13)], datos_adq))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la columna 18
controles<-controles[,-(which.min(BIC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+13],"' "))

[1] “Se elimina por este criterio la variable: ‘Densidad_Pob’”

variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 7
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+13)], datos_adq))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la columna 22
controles<-controles[,-(which.min(BIC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+13],"' "))

[1] “Se elimina por este criterio la variable: ‘Am_lat’”

variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 8
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+13)], datos_adq))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la columna 17
controles<-controles[,-(which.min(BIC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+13],"' "))

[1] “Se elimina por este criterio la variable: ‘Debito’”

variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 9
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+13)], datos_adq))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la columna 15
controles<-controles[,-(which.min(BIC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+13],"' "))

[1] “Se elimina por este criterio la variable: ‘Crimen’”

variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 10
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+13)], datos_adq))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la columna 16
controles<-controles[,-(which.min(BIC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+13],"' "))

[1] “Se elimina por este criterio la variable: ‘Densidad_Neg’”

variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 11
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+13)], datos_adq))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la columna 16
controles<-controles[,-(which.min(BIC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+13],"' "))

[1] “Se elimina por este criterio la variable: ‘ICH’”

variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 12
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+13)], datos_adq))  
}

min(BIC)<BIC[1]

[1] FALSE

#No se eliminan más columnas
controles4<-controles

#variables a usar
print(paste0("Este criterio deja las siguientes variables: ",variables_controles))

[1] “Este criterio deja las siguientes variables: Regulacion_intercambio” [2] “Este criterio deja las siguientes variables: Año_2010”
[3] “Este criterio deja las siguientes variables: Año_2011”
[4] “Este criterio deja las siguientes variables: Año_2012”
[5] “Este criterio deja las siguientes variables: Año_2013”
[6] “Este criterio deja las siguientes variables: Año_2014”
[7] “Este criterio deja las siguientes variables: Año_2015”
[8] “Este criterio deja las siguientes variables: Año_2016”
[9] “Este criterio deja las siguientes variables: Año_2017”
[10] “Este criterio deja las siguientes variables: Año_2018”
[11] “Este criterio deja las siguientes variables: Año_2019”
[12] “Este criterio deja las siguientes variables: Año_2020”
[13] “Este criterio deja las siguientes variables: Año_2021”
[14] “Este criterio deja las siguientes variables: Año_2022”
[15] “Este criterio deja las siguientes variables: Cuenta”
[16] “Este criterio deja las siguientes variables: Valor_prom”
[17] “Este criterio deja las siguientes variables: Europa”

modelo_adq_con_cont_bic_ef<-lm(Adquirencia ~ Regulacion_intercambio + Año_2010 + Año_2011 + Año_2012 +
                                 Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + 
                                 Año_2019 + Año_2020 + Año_2021 + Año_2022 + Cuenta + Valor_prom +
                                 Europa, datos_adq)

modelo_adq_con_cont_bic_ef_corr_hc<-coeftest(modelo_adq_con_cont_bic_ef, vcov. = vcovHC(modelo_adq_con_cont_bic_ef, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_adq_con_cont_bic_ef_corr_hac<-coeftest(modelo_adq_con_cont_bic_ef, vcov. = vcovHAC(modelo_adq_con_cont_bic_ef, adjust = TRUE, sandwich = TRUE))

stargazer(modelo_adq_con_cont_bic_ef, modelo_adq_con_cont_bic_ef_corr_hc,
          type = "html", title = "Regresión sobre la tasa de adquirencia según BIC con efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa adquirencia", "Tasa adquirencia"), dep.var.caption = "Variable dependiente")
Regresión sobre la tasa de adquirencia según BIC con efectos fijos de tiempo
Variable dependiente
Tasa adquirencia Tasa adquirencia
MCO MCO HC
(1) (2)
Regulacion_intercambio -0.560*** -0.560***
(0.123) (0.125)
Año_2010
Año_2011
Año_2012
Año_2013 -2.064*** -2.064***
(0.523) (0.161)
Año_2014 -2.434*** -2.434***
(0.505) (0.135)
Año_2015 -2.288*** -2.288***
(0.495) (0.133)
Año_2016 -2.314*** -2.314***
(0.475) (0.170)
Año_2017 -2.387*** -2.387***
(0.469) (0.150)
Año_2018 -2.334*** -2.334***
(0.476) (0.208)
Año_2019 -2.511*** -2.511***
(0.472) (0.182)
Año_2020 -2.543*** -2.543***
(0.471) (0.182)
Año_2021 -2.719*** -2.719***
(0.489) (0.148)
Año_2022
Cuenta -0.016*** -0.016***
(0.003) (0.002)
Valor_prom -0.004** -0.004**
(0.001) (0.001)
Europa -0.669*** -0.669***
(0.139) (0.155)
Constant 6.154*** 6.154***
(0.487) (0.164)
Observations 87
R2 0.799
Adjusted R2 0.763
Residual Std. Error 0.447 (df = 73)
F Statistic 22.350*** (df = 13; 73)
Note: p<0.1; p<0.05; p<0.01

3.2 Regresiones con truncamiento tasa de adquirencia

Al igual que con la tasa de intercambio, se estiman modelos con truncamiento. Se utilizan valores mínimos de 0 y 0.36 (tasa de adquirencia mínima en la muestra, dada en España).

#Se realiza modelos truncados

#Adquirencia 

#AICc
#Truncamiento en 0

modelo_truncado_adq_0_aicc<-truncreg(Adquirencia ~ Regulacion_intercambio + Crimen + Cuenta + ICH + Valor_prom +
                                       Europa, data = datos_adq, point = 0, direction = "left", model = TRUE, 
                                     y = FALSE, x = FALSE, scaled = TRUE)

summary(modelo_truncado_adq_0_aicc)
## 
## Call:
## truncreg(formula = Adquirencia ~ Regulacion_intercambio + Crimen + 
##     Cuenta + ICH + Valor_prom + Europa, data = datos_adq, point = 0, 
##     direction = "left", model = TRUE, y = FALSE, x = FALSE, scaled = TRUE)
## 
## BFGS maximization method
## 0 iterations, 0h:0m:0s 
## g'(-H)^-1g = 3.2E-10 
##  
## 
## 
## Coefficients :
##                          Estimate Std. Error t-value  Pr(>|t|)    
## (Intercept)             5.8714073  0.7577326  7.7487 9.326e-15 ***
## Regulacion_intercambio -0.5887335  0.1324755 -4.4441 8.826e-06 ***
## Crimen                 -0.0175805  0.0082266 -2.1370  0.032595 *  
## Cuenta                 -0.0153361  0.0037511 -4.0884 4.344e-05 ***
## ICH                    -2.8341033  1.0963721 -2.5850  0.009738 ** 
## Valor_prom             -0.0056538  0.0017644 -3.2044  0.001354 ** 
## Europa                 -0.6638313  0.1545436 -4.2954 1.744e-05 ***
## sigma                   0.4986651  0.0418795 11.9071 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Log-Likelihood: -56.691 on 8 Df
#Pronóstico para CR
#Sin regulación
pred_adq_trunc_0_aicc_sin_reg<-predict(modelo_truncado_adq_0_aicc, newdata = datos, type = c("response"))[which(datos$Codigo_Pais=="CRI")]
#Con regulación
data_CR<-datos
data_CR[ which(datos$Codigo_Pais=="CRI"), which(names(datos)=="Regulacion_intercambio") ]<-1
pred_adq_trunc_0_aicc_con_reg<-predict(modelo_truncado_adq_0_aicc, newdata = data_CR, type = c("response"))[which(datos$Codigo_Pais=="CRI")]

#Truncamiento en 0.36 tasa adquirencia mínima en la muestra de España

modelo_truncado_adq_0.36_aicc<-truncreg(Adquirencia ~ Regulacion_intercambio + Crimen + Cuenta + ICH + Valor_prom +
                                       Europa, data = datos_adq, point = 0.36, direction = "left", model = TRUE,
                                       y = FALSE, x = FALSE, scaled = TRUE)

summary(modelo_truncado_adq_0.36_aicc)
## 
## Call:
## truncreg(formula = Adquirencia ~ Regulacion_intercambio + Crimen + 
##     Cuenta + ICH + Valor_prom + Europa, data = datos_adq, point = 0.36, 
##     direction = "left", model = TRUE, y = FALSE, x = FALSE, scaled = TRUE)
## 
## BFGS maximization method
## 0 iterations, 0h:0m:0s 
## g'(-H)^-1g = 2.75E-10 
##  
## 
## 
## Coefficients :
##                          Estimate Std. Error t-value  Pr(>|t|)    
## (Intercept)             6.2784816  0.8554250  7.3396 2.143e-13 ***
## Regulacion_intercambio -0.6361998  0.1474227 -4.3155 1.593e-05 ***
## Crimen                 -0.0201233  0.0090018 -2.2355  0.025386 *  
## Cuenta                 -0.0171349  0.0042223 -4.0581 4.946e-05 ***
## ICH                    -3.1893007  1.2376948 -2.5768  0.009972 ** 
## Valor_prom             -0.0060374  0.0020140 -2.9977  0.002721 ** 
## Europa                 -0.8681335  0.1979115 -4.3865 1.152e-05 ***
## sigma                   0.5361568  0.0496376 10.8014 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Log-Likelihood: -48.187 on 8 Df
#Pronóstico para CR
#Se toma la fila 32 que corresponde a la 54 (CRI) en datos!!
#Sin regulación
pred_adq_trunc_0.36_aicc_sin_reg<-predict(modelo_truncado_adq_0.36_aicc, newdata = datos, type = c("response"))[which(datos$Codigo_Pais=="CRI")]
#Con regulación
data_CR<-datos
data_CR[ which(datos$Codigo_Pais=="CRI"), which(names(datos)=="Regulacion_intercambio") ]<-1
pred_adq_trunc_0.36_aicc_con_reg<-predict(modelo_truncado_adq_0.36_aicc, newdata = data_CR, type = c("response"))[which(datos$Codigo_Pais=="CRI")]

#BIC
#Truncamiento en 0

modelo_truncado_adq_0_bic<-truncreg(Adquirencia ~ Regulacion_intercambio + Cuenta + Valor_prom + Europa, 
                                    data = datos_adq, point = 0, direction = "left", model = TRUE, y = FALSE,
                                    x = FALSE, scaled = TRUE)

summary(modelo_truncado_adq_0_bic)
## 
## Call:
## truncreg(formula = Adquirencia ~ Regulacion_intercambio + Cuenta + 
##     Valor_prom + Europa, data = datos_adq, point = 0, direction = "left", 
##     model = TRUE, y = FALSE, x = FALSE, scaled = TRUE)
## 
## BFGS maximization method
## 0 iterations, 0h:0m:0s 
## g'(-H)^-1g = 5.84E-13 
##  
## 
## 
## Coefficients :
##                          Estimate Std. Error t-value  Pr(>|t|)    
## (Intercept)             3.8928875  0.2710042 14.3647 < 2.2e-16 ***
## Regulacion_intercambio -0.6782034  0.1328831 -5.1038 3.330e-07 ***
## Cuenta                 -0.0175287  0.0031326 -5.5955 2.199e-08 ***
## Valor_prom             -0.0034619  0.0016118 -2.1478   0.03173 *  
## Europa                 -0.6667807  0.1529170 -4.3604 1.298e-05 ***
## sigma                   0.5228105  0.0443612 11.7853 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Log-Likelihood: -60.44 on 6 Df
#Pronóstico para CR
#Sin regulación
pred_adq_trunc_0_bic_sin_reg<-predict(modelo_truncado_adq_0_bic, newdata = datos, type = c("response"))[which(datos$Codigo_Pais=="CRI")]
#Con regulación
data_CR<-datos
data_CR[ which(datos$Codigo_Pais=="CRI"), which(names(datos)=="Regulacion_intercambio") ]<-1
pred_adq_trunc_0_bic_con_reg<-predict(modelo_truncado_adq_0_bic, newdata = data_CR, type = c("response"))[which(datos$Codigo_Pais=="CRI")]

#Truncamiento en 0.36 tasa adquirencia mínima en la muestra de España

modelo_truncado_adq_0.36_bic<-truncreg(Adquirencia ~ Regulacion_intercambio + Cuenta + Valor_prom + Europa, 
                                       data = datos_adq, point = 0.36, direction = "left", model = TRUE, 
                                       y = FALSE, x = FALSE, scaled = TRUE)

summary(modelo_truncado_adq_0.36_bic)
## 
## Call:
## truncreg(formula = Adquirencia ~ Regulacion_intercambio + Cuenta + 
##     Valor_prom + Europa, data = datos_adq, point = 0.36, direction = "left", 
##     model = TRUE, y = FALSE, x = FALSE, scaled = TRUE)
## 
## BFGS maximization method
## 0 iterations, 0h:0m:0s 
## g'(-H)^-1g = 8.75E-09 
##  
## 
## 
## Coefficients :
##                          Estimate Std. Error t-value  Pr(>|t|)    
## (Intercept)             4.0526745  0.3175164 12.7637 < 2.2e-16 ***
## Regulacion_intercambio -0.7467195  0.1504422 -4.9635 6.923e-07 ***
## Cuenta                 -0.0195648  0.0036509 -5.3588 8.376e-08 ***
## Valor_prom             -0.0036528  0.0018978 -1.9248   0.05425 .  
## Europa                 -0.8849413  0.2027970 -4.3637 1.279e-05 ***
## sigma                   0.5665672  0.0535066 10.5887 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Log-Likelihood: -52.03 on 6 Df
#Pronóstico para CR
#Sin regulación
pred_adq_trunc_0.36_bic_sin_reg<-predict(modelo_truncado_adq_0.36_bic, newdata = datos, type = c("response"))[which(datos$Codigo_Pais=="CRI")]
#Con regulación
data_CR<-datos
data_CR[ which(datos$Codigo_Pais=="CRI"), which(names(datos)=="Regulacion_intercambio") ]<-1
pred_adq_trunc_0.36_bic_con_reg<-predict(modelo_truncado_adq_0.36_bic, newdata = data_CR, type = c("response"))[which(datos$Codigo_Pais=="CRI")]

#AICc con efectos fijos de tiempo
#Truncamiento en 0

modelo_truncado_adq_0_aicc_ef<-truncreg(Adquirencia ~  Regulacion_intercambio + Año_2013 + Año_2014 + Año_2015 +
                                          Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 +
                                          Cuenta + ICH + Valor_prom + Europa, data = datos_adq, point = 0, 
                                        direction = "left", model = TRUE, y = FALSE, 
                                        x = FALSE, scaled = TRUE, fixed = TRUE)

summary(modelo_truncado_adq_0_aicc_ef)
## 
## Call:
## truncreg(formula = Adquirencia ~ Regulacion_intercambio + Año_2013 + 
##     Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + 
##     Año_2019 + Año_2020 + Año_2021 + Cuenta + ICH + Valor_prom + 
##     Europa, data = datos_adq, point = 0, direction = "left", 
##     model = TRUE, y = FALSE, x = FALSE, scaled = TRUE, fixed = TRUE)
## 
## BFGS maximization method
## 0 iterations, 0h:0m:0s 
## g'(-H)^-1g = 5.92E-10 
##  
## 
## 
## Coefficients :
##                          Estimate Std. Error t-value  Pr(>|t|)    
## (Intercept)             6.8031676  0.5800420 11.7287 < 2.2e-16 ***
## Regulacion_intercambio -0.5151060  0.1169933 -4.4029 1.068e-05 ***
## Año_2013               -2.0062932  0.4839904 -4.1453 3.393e-05 ***
## Año_2014               -2.4084323  0.4689334 -5.1360 2.807e-07 ***
## Año_2015               -2.2501120  0.4588924 -4.9034 9.421e-07 ***
## Año_2016               -2.1741674  0.4455660 -4.8796 1.063e-06 ***
## Año_2017               -2.2733947  0.4384673 -5.1849 2.162e-07 ***
## Año_2018               -2.2369268  0.4434446 -5.0444 4.549e-07 ***
## Año_2019               -2.4237899  0.4393687 -5.5165 3.458e-08 ***
## Año_2020               -2.4742651  0.4374508 -5.6561 1.549e-08 ***
## Año_2021               -2.6498355  0.4563084 -5.8071 6.356e-09 ***
## Cuenta                 -0.0134137  0.0030374 -4.4162 1.005e-05 ***
## ICH                    -1.4797483  0.8484499 -1.7441  0.081148 .  
## Valor_prom             -0.0038552  0.0013051 -2.9540  0.003137 ** 
## Europa                 -0.6386531  0.1379663 -4.6291 3.673e-06 ***
## sigma                   0.4125472  0.0334777 12.3230 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Log-Likelihood: -43.01 on 16 Df
#Pronóstico para CR
#Sin regulación
pred_adq_trunc_0_aicc_ef_sin_reg<-predict(modelo_truncado_adq_0_aicc_ef, newdata = datos, type = c("response"))[which(datos$Codigo_Pais=="CRI")]
#Con regulación
data_CR<-datos
data_CR[ which(datos$Codigo_Pais=="CRI"), which(names(datos)=="Regulacion_intercambio") ]<-1
pred_adq_trunc_0_aicc_ef_con_reg<-predict(modelo_truncado_adq_0_aicc_ef, newdata = data_CR, type = c("response"))[which(datos$Codigo_Pais=="CRI")]

#Truncamiento en 0.36 tasa adquirencia mínima en la muestra de España

modelo_truncado_adq_0.36_aicc_ef<-truncreg(Adquirencia ~ Regulacion_intercambio + Año_2013 + Año_2014 + Año_2015 +
                                          Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 +
                                          Cuenta + ICH + Valor_prom + Europa, data = datos_adq, point = 0.36, 
                                          direction = "left", model = TRUE, y = FALSE, x = FALSE, scaled = TRUE)

summary(modelo_truncado_adq_0.36_aicc_ef)
## 
## Call:
## truncreg(formula = Adquirencia ~ Regulacion_intercambio + Año_2013 + 
##     Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + 
##     Año_2019 + Año_2020 + Año_2021 + Cuenta + ICH + Valor_prom + 
##     Europa, data = datos_adq, point = 0.36, direction = "left", 
##     model = TRUE, y = FALSE, x = FALSE, scaled = TRUE)
## 
## BFGS maximization method
## 0 iterations, 0h:0m:0s 
## g'(-H)^-1g = 2.24E-08 
##  
## 
## 
## Coefficients :
##                          Estimate Std. Error t-value  Pr(>|t|)    
## (Intercept)             6.8770435  0.6301780 10.9129 < 2.2e-16 ***
## Regulacion_intercambio -0.5304547  0.1270036 -4.1767 2.958e-05 ***
## Año_2013               -1.8863919  0.5206267 -3.6233 0.0002909 ***
## Año_2014               -2.4114193  0.5068766 -4.7574 1.961e-06 ***
## Año_2015               -2.2423381  0.4941915 -4.5374 5.696e-06 ***
## Año_2016               -2.1484023  0.4781733 -4.4929 7.025e-06 ***
## Año_2017               -2.2507129  0.4717431 -4.7711 1.833e-06 ***
## Año_2018               -2.2172259  0.4755066 -4.6629 3.118e-06 ***
## Año_2019               -2.4117006  0.4707899 -5.1227 3.012e-07 ***
## Año_2020               -2.4551792  0.4687430 -5.2378 1.625e-07 ***
## Año_2021               -2.6643625  0.4918906 -5.4166 6.075e-08 ***
## Cuenta                 -0.0143695  0.0033361 -4.3073 1.653e-05 ***
## ICH                    -1.5306183  0.9352656 -1.6366 0.1017224    
## Valor_prom             -0.0037894  0.0014447 -2.6231 0.0087140 ** 
## Europa                 -0.7907029  0.1704644 -4.6385 3.509e-06 ***
## sigma                   0.4408098  0.0393721 11.1960 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Log-Likelihood: -36.615 on 16 Df
#Pronóstico para CR
#Sin regulación
pred_adq_trunc_0.36_aicc_ef_sin_reg<-predict(modelo_truncado_adq_0.36_aicc_ef, newdata = datos, type = c("response"))[which(datos$Codigo_Pais=="CRI")]
#Con regulación
data_CR<-datos
data_CR[ which(datos$Codigo_Pais=="CRI"), which(names(datos)=="Regulacion_intercambio") ]<-1
pred_adq_trunc_0.36_aicc_ef_con_reg<-predict(modelo_truncado_adq_0.36_aicc_ef, newdata = data_CR, type = c("response"))[which(datos$Codigo_Pais=="CRI")]

#BIC con efectos fijos de tiempo
#Truncamiento en 0

modelo_truncado_adq_0_bic_ef<-truncreg(Adquirencia ~ Regulacion_intercambio + Año_2013 + Año_2014 + Año_2015 + 
                                         Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 + 
                                         Cuenta + Valor_prom + Europa, data = datos_adq, point = 0, 
                                       direction = "left", model = TRUE, y = FALSE, x = FALSE, scaled = TRUE)

summary(modelo_truncado_adq_0_bic_ef)
## 
## Call:
## truncreg(formula = Adquirencia ~ Regulacion_intercambio + Año_2013 + 
##     Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + 
##     Año_2019 + Año_2020 + Año_2021 + Cuenta + Valor_prom + 
##     Europa, data = datos_adq, point = 0, direction = "left", 
##     model = TRUE, y = FALSE, x = FALSE, scaled = TRUE)
## 
## BFGS maximization method
## 0 iterations, 0h:0m:0s 
## g'(-H)^-1g = 1.22E-10 
##  
## 
## 
## Coefficients :
##                          Estimate Std. Error t-value  Pr(>|t|)    
## (Intercept)             6.1673947  0.4595701 13.4199 < 2.2e-16 ***
## Regulacion_intercambio -0.5628511  0.1160803 -4.8488 1.242e-06 ***
## Año_2013               -2.0372405  0.4932496 -4.1302 3.624e-05 ***
## Año_2014               -2.4347265  0.4781385 -5.0921 3.541e-07 ***
## Año_2015               -2.2833180  0.4677010 -4.8820 1.050e-06 ***
## Año_2016               -2.3079186  0.4476255 -5.1559 2.524e-07 ***
## Año_2017               -2.3770699  0.4430934 -5.3647 8.108e-08 ***
## Año_2018               -2.3280283  0.4490832 -5.1840 2.172e-07 ***
## Año_2019               -2.5097449  0.4452415 -5.6368 1.732e-08 ***
## Año_2020               -2.5396707  0.4444708 -5.7139 1.104e-08 ***
## Año_2021               -2.7327998  0.4629780 -5.9027 3.577e-09 ***
## Cuenta                 -0.0165102  0.0025238 -6.5417 6.081e-11 ***
## Valor_prom             -0.0035550  0.0013212 -2.6907  0.007131 ** 
## Europa                 -0.7048787  0.1363030 -5.1714 2.323e-07 ***
## sigma                   0.4207031  0.0342423 12.2861 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Log-Likelihood: -44.501 on 15 Df
#Pronóstico para CR
#Sin regulación
pred_adq_trunc_0_bic_ef_sin_reg<-predict(modelo_truncado_adq_0_bic_ef, newdata = datos, type = c("response"))[which(datos$Codigo_Pais=="CRI")]
#Con regulación
data_CR<-datos
data_CR[ which(datos$Codigo_Pais=="CRI"), which(names(datos)=="Regulacion_intercambio") ]<-1
pred_adq_trunc_0_bic_ef_con_reg<-predict(modelo_truncado_adq_0_bic_ef, newdata = data_CR, type = c("response"))[which(datos$Codigo_Pais=="CRI")]

#Truncamiento en 0.36 tasa adquirencia mínima en la muestra de España

modelo_truncado_adq_0.36_bic_ef<-truncreg(Adquirencia ~ Regulacion_intercambio + Año_2013 + Año_2014 + Año_2015 + 
                                         Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 + 
                                         Cuenta + Valor_prom + Europa, data = datos_adq, point = 0.36, 
                                         direction = "left", model = TRUE, y = FALSE, x = FALSE, scaled = TRUE)

summary(modelo_truncado_adq_0.36_bic_ef)
## 
## Call:
## truncreg(formula = Adquirencia ~ Regulacion_intercambio + Año_2013 + 
##     Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + 
##     Año_2019 + Año_2020 + Año_2021 + Cuenta + Valor_prom + 
##     Europa, data = datos_adq, point = 0.36, direction = "left", 
##     model = TRUE, y = FALSE, x = FALSE, scaled = TRUE)
## 
## BFGS maximization method
## 0 iterations, 0h:0m:0s 
## g'(-H)^-1g = 1.86E-09 
##  
## 
## 
## Coefficients :
##                          Estimate Std. Error t-value  Pr(>|t|)    
## (Intercept)             6.2226222  0.4950169 12.5705 < 2.2e-16 ***
## Regulacion_intercambio -0.5821269  0.1261115 -4.6160 3.913e-06 ***
## Año_2013               -1.9102537  0.5313623 -3.5950 0.0003244 ***
## Año_2014               -2.4374197  0.5174911 -4.7101 2.476e-06 ***
## Año_2015               -2.2768262  0.5044766 -4.5132 6.384e-06 ***
## Año_2016               -2.2891355  0.4802450 -4.7666 1.874e-06 ***
## Año_2017               -2.3534788  0.4774876 -4.9289 8.270e-07 ***
## Año_2018               -2.3108932  0.4819294 -4.7951 1.626e-06 ***
## Año_2019               -2.4998552  0.4773814 -5.2366 1.636e-07 ***
## Año_2020               -2.5197615  0.4767382 -5.2854 1.254e-07 ***
## Año_2021               -2.7501232  0.4993932 -5.5069 3.651e-08 ***
## Cuenta                 -0.0175666  0.0028038 -6.2652 3.723e-10 ***
## Valor_prom             -0.0035250  0.0014778 -2.3854 0.0170623 *  
## Europa                 -0.8722597  0.1700910 -5.1282 2.925e-07 ***
## sigma                   0.4500144  0.0403498 11.1528 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Log-Likelihood: -37.929 on 15 Df
#Pronóstico para CR
#Sin regulación
pred_adq_trunc_0.36_bic_ef_sin_reg<-predict(modelo_truncado_adq_0.36_bic_ef, newdata = datos, type = c("response"))[which(datos$Codigo_Pais=="CRI")]
#Con regulación
data_CR<-datos
data_CR[ which(datos$Codigo_Pais=="CRI"), which(names(datos)=="Regulacion_intercambio") ]<-1
pred_adq_trunc_0.36_bic_ef_con_reg<-predict(modelo_truncado_adq_0.36_bic_ef, newdata = data_CR, type = c("response"))[which(datos$Codigo_Pais=="CRI")]

# promedio de las estimaciones sin regulación en 0
pred_adq_trunc_0_todos_sin_reg<-mean(c(as.numeric(pred_adq_trunc_0_aicc_sin_reg), as.numeric(pred_adq_trunc_0_bic_sin_reg), as.numeric(pred_adq_trunc_0_aicc_ef_sin_reg), as.numeric(pred_adq_trunc_0_bic_ef_sin_reg)))

# promedio de las estimaciones con regulación truncado en 0
pred_adq_trunc_0_todos_con_reg<-mean(c(as.numeric(pred_adq_trunc_0_aicc_con_reg), as.numeric(pred_adq_trunc_0_bic_con_reg), as.numeric(pred_adq_trunc_0_aicc_ef_con_reg), as.numeric(pred_adq_trunc_0_bic_ef_con_reg)))

# promedio de las estimaciones sin regulación en 0.36
pred_adq_trunc_0.36_todos_sin_reg<-mean(c(as.numeric(pred_adq_trunc_0.36_aicc_sin_reg), as.numeric(pred_adq_trunc_0.36_bic_sin_reg), as.numeric(pred_adq_trunc_0.36_aicc_ef_sin_reg), as.numeric(pred_adq_trunc_0.36_bic_ef_sin_reg)))

# promedio de las estimaciones con regulación truncado en 0.36
pred_adq_trunc_0.36_todos_con_reg<-mean(c(as.numeric(pred_adq_trunc_0.36_aicc_con_reg), as.numeric(pred_adq_trunc_0.36_bic_con_reg), as.numeric(pred_adq_trunc_0.36_aicc_ef_con_reg), as.numeric(pred_adq_trunc_0.36_bic_ef_con_reg)))

# Pronósticos con regulación y ajuste:
pred_adq_trunc_0_todos_con_reg_ajus<-(pred_adq_trunc_0_todos_con_reg+(-0.25*0.03) - (1*0.06) - (1.25*0.05) - (1.5*0.02) - (1.75*0.05))/(0.71 + 0.08)  
  pred_adq_trunc_0_todos_con_reg_ajus
## [1] 1.923372
pred_adq_trunc_0.36_todos_con_reg_ajus<-(pred_adq_trunc_0.36_todos_con_reg+(-0.25*0.03) - (1*0.06) - (1.25*0.05) - (1.5*0.02) - (1.75*0.05))/(0.71 + 0.08)

3.3 Transformación logarítmica de la variable dependiente

#Con toda la muestra con logaritmo
#Regresión sin controles
modelo_log_adq_sin_cont<-lm(log(Adquirencia) ~ Regulacion_intercambio, datos)

modelo_log_adq_sin_cont_corr_hc<-coeftest(modelo_log_adq_sin_cont, vcov. = vcovHC(modelo_log_adq_sin_cont, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_log_adq_sin_cont_corr_hac<-coeftest(modelo_log_adq_sin_cont, vcov. = vcovHAC(modelo_log_adq_sin_cont, adjust = TRUE, sandwich = TRUE))

#stargazer(modelo_log_adq_sin_cont, modelo_log_adq_sin_cont_corr_hc,
#          type = "html", title = "Regresión sobre el logaritmo de la tasa de adquirencia sin controles", 
#          column.labels = c("MCO","MCO HC"), model.names = F, 
#          dep.var.labels = c("Tasa adquirencia", "Tasa adquirencia"), dep.var.caption = "Variable dependiente")
#
#Pronóstico para CR
#Sin regulación
pred_log_adq_sin_cont_sin_reg<-exp(predict(modelo_log_adq_sin_cont, newdata = datos, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")])
#Con regulación
data_CR<-datos
data_CR[ which(datos$Codigo_Pais=="CRI"), which(names(datos)=="Regulacion_intercambio") ]<-1
pred_log_adq_sin_cont_con_reg<-exp(predict(modelo_log_adq_sin_cont, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")])

#Regresión con todos los controles
modelo_log_adq_con_cont<-lm(log(Adquirencia) ~ Regulacion_intercambio + Cajero_Autom + Crimen + Cuenta + Debito +
                              Credito + Densidad_Pob + Densidad_Neg + PIB_pc_PPA + ICH + Europa + Asia_Este + 
                              Am_lat +Valor_prom + Pago_digital, datos)

modelo_log_adq_con_cont_corr_hc<-coeftest(modelo_log_adq_con_cont, vcov. = vcovHC(modelo_log_adq_con_cont, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_log_adq_con_cont_corr_hac<-coeftest(modelo_log_adq_con_cont, vcov. = vcovHAC(modelo_log_adq_con_cont, adjust = TRUE, sandwich = TRUE))

#stargazer(modelo_log_adq_con_cont, modelo_log_adq_con_cont_corr_hc, type = "html", 
#          title = "Regresión sobre el logaritmo de la tasa de adquirencia con todos los controles", 
#          column.labels = c("MCO","MCO HC"), model.names = F, dep.var.labels = c("Tasa adquirencia", "Tasa adquirencia"), dep.var.caption = "Variable #dependiente")

#Pronóstico para CR
#Sin regulación
pred_log_adq_con_cont_sin_reg<-exp(predict(modelo_log_adq_con_cont, newdata = datos, 
                                           interval = "prediction", level = 0.95, 
                                           type = "response")[which(datos$Codigo_Pais=="CRI")])
#Con regulación
data_CR<-datos
data_CR[ which(datos$Codigo_Pais=="CRI"), which(names(datos)=="Regulacion_intercambio") ]<-1
pred_log_adq_con_cont_con_reg<-exp(predict(modelo_log_adq_con_cont, newdata = data_CR, 
                                           interval = "prediction", level = 0.95, 
                                           type = "response")[which(datos$Codigo_Pais=="CRI")])

#Regresión con todos los controles más efectos fijos de tiempo
modelo_log_adq_con_cont_ef<-lm(log(Adquirencia) ~ Regulacion_intercambio + Cajero_Autom + Crimen + Cuenta +
                                 Pago_digital + Debito + Credito + Densidad_Pob + Densidad_Neg + PIB_pc_PPA + 
                                 ICH + Valor_prom + Europa + Asia_Este + Am_lat + Año_2010 + Año_2011 + Año_2012 +
                                 Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + Año_2019 + 
                                 Año_2020 + Año_2021 + Año_2022, datos)

modelo_log_adq_con_cont_ef_corr_hc<-coeftest(modelo_log_adq_con_cont_ef, vcov. = vcovHC(modelo_log_adq_con_cont_ef, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_log_adq_con_cont_ef_corr_hac<-coeftest(modelo_log_adq_con_cont_ef, vcov. = vcovHAC(modelo_log_adq_con_cont_ef, adjust = TRUE, sandwich = TRUE))#

#stargazer(modelo_log_adq_con_cont_ef, modelo_log_adq_con_cont_ef_corr_hc, type = "html", title = "Regresión sobre el logaritmo de la tasa de #adquirencia con controles y efectos fijos de tiempo", 
#          column.labels = c("MCO","MCO HC"), model.names = F, 
#          dep.var.labels = c("Tasa adquirencia", "Tasa adquirencia"), dep.var.caption = "Variable dependiente")

#Pronóstico para CR
#Sin regulación
pred_log_adq_con_cont_ef_sin_reg<-exp(predict(modelo_log_adq_con_cont_ef, newdata = datos, 
                                              interval = "prediction", level = 0.95, 
                                              type = "response")[which(datos$Codigo_Pais=="CRI")])
#Con regulación
data_CR<-datos
data_CR[ which(datos$Codigo_Pais=="CRI"), which(names(datos)=="Regulacion_intercambio") ]<-1

pred_log_adq_con_cont_ef_con_reg<-exp(predict(modelo_log_adq_con_cont_ef, newdata = data_CR, 
                                              interval = "prediction", level = 0.95, 
                                              type = "response")[which(datos$Codigo_Pais=="CRI")])

#Seleccionar el modelo utilizando el AICc (corrige por tamaño de muestra pequeña)
#Se elimina la tasa de adquirencia en los datos para evitar sus NAs

datos_adq<-datos %>% dplyr::select(-Intercambio) %>% na.omit()

modelo_log_adq_con_cont_aicc<-lm(log(Adquirencia) ~ Regulacion_intercambio + Cajero_Autom + Crimen + Cuenta +
                                   Pago_digital + Debito + Credito + Densidad_Pob + Densidad_Neg + PIB_pc_PPA +
                                   ICH + Valor_prom + Europa + Asia_Este + Am_lat, datos_adq)

variables_controles<-c("Regulacion_intercambio", "Cajero_Autom", "Crimen", "Cuenta", "Pago_digital", "Debito", "Credito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH", "Valor_prom", "Europa", "Asia_Este", "Am_lat")

controles<- datos_adq %>% dplyr::select(c(variables_controles)) %>% as.matrix()

#Paso 1
AICC<-c()
AICC[1]<-aicc(modelo_log_adq_con_cont_aicc)

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(log(Adquirencia) ~ controles[,-c(i)], datos_adq))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la columna 15
controles<-controles[,-which.min(AICC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Am_lat’”

variables_controles<-variables_controles[-which.min(AICC)]

#Paso 2
AICC<-c()
AICC[1]<-aicc(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(log(Adquirencia) ~ controles[,-c(i)], datos_adq))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la columna 6
controles<-controles[,-which.min(AICC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Debito’”

variables_controles<-variables_controles[-which.min(AICC)]

#Paso 3
AICC<-c()
AICC[1]<-aicc(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(log(Adquirencia) ~ controles[,-c(i)], datos_adq))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la columna 10
controles<-controles[,-which.min(AICC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))

[1] “Se elimina por este criterio la variable: ‘ICH’”

variables_controles<-variables_controles[-which.min(AICC)]

#Paso 4
AICC<-c()
AICC[1]<-aicc(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(log(Adquirencia) ~ controles[,-c(i)], datos_adq))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la columna 4
controles<-controles[,-which.min(AICC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Cuenta’”

variables_controles<-variables_controles[-which.min(AICC)]

#Paso 5
AICC<-c()
AICC[1]<-aicc(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(log(Adquirencia) ~ controles[,-c(i)], datos_adq))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la columna 6
controles<-controles[,-which.min(AICC)]
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 6
AICC<-c()
AICC[1]<-aicc(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(log(Adquirencia) ~ controles[,-c(i)], datos_adq))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la columna 3
controles<-controles[,-which.min(AICC)]
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 7
AICC<-c()
AICC[1]<-aicc(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(log(Adquirencia) ~ controles[,-c(i)], datos_adq))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la columna 2
controles<-controles[,-which.min(AICC)]
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 8
AICC<-c()
AICC[1]<-aicc(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(log(Adquirencia) ~ controles[,-c(i)], datos_adq))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la columna 5
controles<-controles[,-which.min(AICC)]
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 9
AICC<-c()
AICC[1]<-aicc(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(log(Adquirencia) ~ controles[,-c(i)], datos_adq))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la columna 7
controles<-controles[,-which.min(AICC)]
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 10
AICC<-c()
AICC[1]<-aicc(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(log(Adquirencia) ~ controles[,-c(i)], datos_adq))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la columna 3
controles<-controles[,-which.min(AICC)]
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 11
AICC<-c()
AICC[1]<-aicc(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(log(Adquirencia) ~ controles[,-c(i)], datos_adq))  
}

min(AICC)<AICC[1]

[1] FALSE

#Ya no se eliminan columnas
controles1<-controles

#variables a usar
variables_controles

[1] “Regulacion_intercambio” “Pago_digital” “Densidad_Neg”
[4] “Valor_prom” “Europa”

# Estimación del modelo seleccionado

modelo_log_adq_con_cont_aicc<-lm(log(Adquirencia) ~ Regulacion_intercambio + Pago_digital + Densidad_Neg + Valor_prom + Europa, datos_adq)

modelo_log_adq_con_cont_aicc_corr_hc<-coeftest(modelo_log_adq_con_cont_aicc, vcov. = vcovHC(modelo_log_adq_con_cont_aicc, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_log_adq_con_cont_aicc_corr_hac<-coeftest(modelo_log_adq_con_cont_aicc, vcov. = vcovHAC(modelo_log_adq_con_cont_aicc, adjust = TRUE, sandwich = TRUE))

stargazer(modelo_log_adq_con_cont_aicc, modelo_log_adq_con_cont_aicc_corr_hc,
          type = "html", title = "Regresión sobre el logaritmo de la tasa de adquirencia según AICc", 
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa adquirencia", "Tasa adquirencia"), dep.var.caption = "Variable dependiente")
Regresión sobre el logaritmo de la tasa de adquirencia según AICc
Variable dependiente
Tasa adquirencia Tasa adquirencia
MCO MCO HC
(1) (2)
Regulacion_intercambio -0.363*** -0.363***
(0.082) (0.066)
Pago_digital -0.013*** -0.013***
(0.002) (0.002)
Densidad_Neg 0.019** 0.019*
(0.009) (0.010)
Valor_prom -0.002** -0.002***
(0.001) (0.001)
Europa -0.507*** -0.507***
(0.091) (0.099)
Constant 1.733*** 1.733***
(0.157) (0.120)
Observations 87
R2 0.758
Adjusted R2 0.743
Residual Std. Error 0.319 (df = 81)
F Statistic 50.848*** (df = 5; 81)
Note: p<0.1; p<0.05; p<0.01
#Seleccionar el modelo utilizando el BIC
modelo_log_adq_con_cont_bic<-lm(log(Adquirencia) ~ Regulacion_intercambio + Cajero_Autom + Crimen + Cuenta +
                                   Pago_digital + Debito + Credito + Densidad_Pob + Densidad_Neg + PIB_pc_PPA + ICH +
                                   Valor_prom + Europa + Asia_Este + Am_lat, datos_adq)

variables_controles<-c("Regulacion_intercambio", "Cajero_Autom", "Crimen", "Cuenta", "Pago_digital", "Debito",
                       "Credito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH", "Valor_prom", "Europa", 
                       "Asia_Este", "Am_lat")

controles<- datos_adq %>% dplyr::select(c(variables_controles)) %>% as.matrix()
#Paso 1
BIC<-c()
BIC[1]<-BIC(modelo_log_adq_con_cont_bic)

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(log(Adquirencia) ~ controles[,-c(i)], datos_adq))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la columna 15
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Am_lat’”

variables_controles<-variables_controles[-which.min(BIC)]

#Paso 2
BIC<-c()
BIC[1]<-BIC(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(log(Adquirencia) ~ controles[,-c(i)], datos_adq))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la columna 6
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Debito’”

variables_controles<-variables_controles[-which.min(BIC)]

#Paso 3
BIC<-c()
BIC[1]<-BIC(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(log(Adquirencia) ~ controles[,-c(i)], datos_adq))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la columna 10
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))

[1] “Se elimina por este criterio la variable: ‘ICH’”

variables_controles<-variables_controles[-which.min(BIC)]

#Paso 4
BIC<-c()
BIC[1]<-BIC(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(log(Adquirencia) ~ controles[,-c(i)], datos_adq))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la columna 4
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Cuenta’”

variables_controles<-variables_controles[-which.min(BIC)]

#Paso 5
BIC<-c()
BIC[1]<-BIC(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(log(Adquirencia) ~ controles[,-c(i)], datos_adq))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la columna 6
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Densidad_Pob’”

variables_controles<-variables_controles[-which.min(BIC)]

#Paso 6
BIC<-c()
BIC[1]<-BIC(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(log(Adquirencia) ~ controles[,-c(i)], datos_adq))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la columna 3
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Crimen’”

variables_controles<-variables_controles[-which.min(BIC)]

#Paso 7
BIC<-c()
BIC[1]<-BIC(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(log(Adquirencia) ~ controles[,-c(i)], datos_adq))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la columna 2
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Cajero_Autom’”

variables_controles<-variables_controles[-which.min(BIC)]

#Paso 8
BIC<-c()
BIC[1]<-BIC(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(log(Adquirencia) ~ controles[,-c(i)], datos_adq))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la columna 5
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))

[1] “Se elimina por este criterio la variable: ‘PIB_pc_PPA’”

variables_controles<-variables_controles[-which.min(BIC)]

#Paso 9
BIC<-c()
BIC[1]<-BIC(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(log(Adquirencia) ~ controles[,-c(i)], datos_adq))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la columna 7
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Asia_Este’”

variables_controles<-variables_controles[-which.min(BIC)]

#Paso 10
BIC<-c()
BIC[1]<-BIC(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(log(Adquirencia) ~ controles[,-c(i)], datos_adq))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la columna 3
controles<-controles[,-which.min(BIC)]
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 11
BIC<-c()
BIC[1]<-BIC(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(log(Adquirencia) ~ controles[,-c(i)], datos_adq))  
}

min(BIC)<BIC[1]

[1] FALSE

#Ya no se eliminan columnas
controles2<-controles

#variables a usar
variables_controles

[1] “Regulacion_intercambio” “Pago_digital” “Densidad_Neg”
[4] “Valor_prom” “Europa”

modelo_log_adq_con_cont_bic<-lm(log(Adquirencia) ~ Regulacion_intercambio + Pago_digital + Densidad_Neg + Valor_prom +
                                  Europa, datos_adq)

modelo_log_adq_con_cont_bic_corr_hc<-coeftest(modelo_log_adq_con_cont_bic, vcov. = vcovHC(modelo_log_adq_con_cont_bic, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_log_adq_con_cont_bic_corr_hac<-coeftest(modelo_log_adq_con_cont_bic, vcov. = vcovHAC(modelo_log_adq_con_cont_bic, adjust = TRUE, sandwich = TRUE))

stargazer(modelo_log_adq_con_cont_bic, modelo_log_adq_con_cont_bic_corr_hc,
          type = "html", title = "Regresión sobre el logaritmo de la tasa de adquirencia según BIC", 
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa adquirencia", "Tasa adquirencia"), dep.var.caption = "Variable dependiente")
Regresión sobre el logaritmo de la tasa de adquirencia según BIC
Variable dependiente
Tasa adquirencia Tasa adquirencia
MCO MCO HC
(1) (2)
Regulacion_intercambio -0.363*** -0.363***
(0.082) (0.066)
Pago_digital -0.013*** -0.013***
(0.002) (0.002)
Densidad_Neg 0.019** 0.019*
(0.009) (0.010)
Valor_prom -0.002** -0.002***
(0.001) (0.001)
Europa -0.507*** -0.507***
(0.091) (0.099)
Constant 1.733*** 1.733***
(0.157) (0.120)
Observations 87
R2 0.758
Adjusted R2 0.743
Residual Std. Error 0.319 (df = 81)
F Statistic 50.848*** (df = 5; 81)
Note: p<0.1; p<0.05; p<0.01
#Seleccionar el modelo utilizando el AICc (corrige por tamaño de muestra pequeña), más efectos fijos de tiempo
modelo_log_adq_con_cont_aicc_ef<-lm(log(Adquirencia) ~ Regulacion_intercambio + Año_2010 + Año_2011 + Año_2012 +
                                      Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + Año_2019 +
                                      Año_2020 + Año_2021  + Año_2022 + Cajero_Autom + Crimen + Cuenta + 
                                      Pago_digital + Debito + Credito + Densidad_Pob + Densidad_Neg + PIB_pc_PPA + 
                                      ICH + Valor_prom + Europa + Asia_Este + Am_lat, datos_adq)

variables_controles<-c("Regulacion_intercambio", "Año_2010", "Año_2011", "Año_2012", "Año_2013", "Año_2014",
                       "Año_2015", "Año_2016", "Año_2017", "Año_2018", "Año_2019", "Año_2020", "Año_2021",
                       "Año_2022","Cajero_Autom", "Crimen", "Cuenta", "Pago_digital", "Debito", "Credito",
                       "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH", "Valor_prom", "Europa", "Asia_Este",
                       "Am_lat")
controles<- datos_adq %>% dplyr::select(c(variables_controles)) %>% as.matrix()

#Paso 1
AICC<-c()
AICC[1]<-aicc(modelo_log_adq_con_cont_aicc_ef)

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(log(Adquirencia) ~ controles[,-c(i+13)], datos_adq))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la columna 16
controles<-controles[,-(which.min(AICC)+13)]
variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 2
AICC<-c()
AICC[1]<-aicc(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(log(Adquirencia) ~ controles[,-c(i+13)], datos_adq))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la columna 26
controles<-controles[,-(which.min(AICC)+13)]
variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 3
AICC<-c()
AICC[1]<-aicc(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(log(Adquirencia) ~ controles[,-c(i+13)], datos_adq))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la columna 15
controles<-controles[,-(which.min(AICC)+13)]
variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 4
AICC<-c()
AICC[1]<-aicc(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(log(Adquirencia) ~ controles[,-c(i+13)], datos_adq))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la columna 15
controles<-controles[,-(which.min(AICC)+13)]
variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 5
AICC<-c()
AICC[1]<-aicc(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(log(Adquirencia) ~ controles[,-c(i+13)], datos_adq))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la columna 21
controles<-controles[,-(which.min(AICC)+13)]
variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 6
AICC<-c()
AICC[1]<-aicc(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(log(Adquirencia) ~ controles[,-c(i+13)], datos_adq))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la columna 20
controles<-controles[,-(which.min(AICC)+13)]
variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 7
AICC<-c()
AICC[1]<-aicc(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(log(Adquirencia) ~ controles[,-c(i+13)], datos_adq))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la columna 17
controles<-controles[,-(which.min(AICC)+13)]
variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 8
AICC<-c()
AICC[1]<-aicc(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(log(Adquirencia) ~ controles[,-c(i+13)], datos_adq))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la columna 21
controles<-controles[,-(which.min(AICC)+13)]
variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 9
AICC<-c()
AICC[1]<-aicc(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(log(Adquirencia) ~ controles[,-c(i+13)], datos_adq))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la columna 16
controles<-controles[,-(which.min(AICC)+13)]
variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 10
AICC<-c()
AICC[1]<-aicc(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(log(Adquirencia) ~ controles[,-c(i+13)], datos_adq))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la columna 16
controles<-controles[,-(which.min(AICC)+13)]
variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 11
AICC<-c()
AICC[1]<-aicc(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(log(Adquirencia) ~ controles[,-c(i+13)], datos_adq))  
}

min(AICC)<AICC[1]

[1] FALSE

#Ya no se eliminan columnas
controles3<-controles

#variables a usar
variables_controles

[1] “Regulacion_intercambio” “Año_2010” “Año_2011”
[4] “Año_2012” “Año_2013” “Año_2014”
[7] “Año_2015” “Año_2016” “Año_2017”
[10] “Año_2018” “Año_2019” “Año_2020”
[13] “Año_2021” “Año_2022” “Pago_digital”
[16] “Densidad_Neg” “Valor_prom” “Europa”

# Se omiten los años 2010 al 2013 por colinealidad.
modelo_log_adq_con_cont_aicc_ef<-lm(log(Adquirencia) ~ Regulacion_intercambio + Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + Año_2019 +
                                      Año_2020 + Año_2021 + Año_2022 + Pago_digital + Densidad_Neg + Valor_prom + Europa, datos_adq)

modelo_log_adq_con_cont_aicc_ef_corr_hc<-coeftest(modelo_log_adq_con_cont_aicc_ef, vcov. = vcovHC(modelo_log_adq_con_cont_aicc_ef, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_log_adq_con_cont_aicc_ef_corr_hac<-coeftest(modelo_log_adq_con_cont_aicc_ef, vcov. = vcovHAC(modelo_log_adq_con_cont_aicc_ef, adjust = TRUE, sandwich = TRUE))

stargazer(modelo_log_adq_con_cont_aicc_ef, modelo_log_adq_con_cont_aicc_ef_corr_hc, type = "html", 
          title = "Regresión sobre el logaritmo de la tasa de adquirencia según AICc con efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa adquirencia", "Tasa adquirencia"), dep.var.caption = "Variable dependiente")
Regresión sobre el logaritmo de la tasa de adquirencia según AICc con efectos fijos de tiempo
Variable dependiente
Tasa adquirencia Tasa adquirencia
MCO MCO HC
(1) (2)
Regulacion_intercambio -0.314*** -0.314***
(0.088) (0.070)
Año_2014 -0.320 -0.320**
(0.255) (0.136)
Año_2015 -0.315 -0.315**
(0.246) (0.141)
Año_2016 -0.301 -0.301*
(0.226) (0.168)
Año_2017 -0.245 -0.245*
(0.208) (0.132)
Año_2018 -0.336 -0.336**
(0.228) (0.167)
Año_2019 -0.397* -0.397**
(0.223) (0.158)
Año_2020 -0.348 -0.348*
(0.221) (0.193)
Año_2021 -0.472* -0.472***
(0.242) (0.171)
Año_2022 0.413 0.413***
(0.373) (0.131)
Pago_digital -0.012*** -0.012***
(0.002) (0.002)
Densidad_Neg 0.018** 0.018
(0.009) (0.011)
Valor_prom -0.002** -0.002**
(0.001) (0.001)
Europa -0.602*** -0.602***
(0.104) (0.139)
Constant 2.007*** 2.007***
(0.228) (0.149)
Observations 87
R2 0.789
Adjusted R2 0.748
Residual Std. Error 0.316 (df = 72)
F Statistic 19.258*** (df = 14; 72)
Note: p<0.1; p<0.05; p<0.01
#Seleccionar el modelo utilizando el BIC, más efectos fijos de tiempo
modelo_log_adq_con_cont_bic_ef<-lm(log(Adquirencia) ~ Regulacion_intercambio + Año_2010 + Año_2011 + Año_2012 +
                                     Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + Año_2019 + 
                                     Año_2020 + Año_2021 + Año_2022 + Cajero_Autom + Crimen + Cuenta +
                                     Pago_digital + Debito + Credito + Densidad_Pob + Densidad_Neg + PIB_pc_PPA +
                                     ICH + Valor_prom + Europa + Asia_Este + Am_lat, datos_adq)

variables_controles<-c("Regulacion_intercambio", "Año_2010", "Año_2011", "Año_2012", "Año_2013", "Año_2014", "Año_2015", "Año_2016", "Año_2017", "Año_2018", "Año_2019", "Año_2020", "Año_2021", "Año_2022","Cajero_Autom", "Crimen", "Cuenta", "Pago_digital", "Debito", "Credito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH", "Valor_prom", "Europa", "Asia_Este", "Am_lat")

controles<- datos_adq %>% dplyr::select(c(variables_controles)) %>% as.matrix()

#Paso 1
BIC<-c()
BIC[1]<-BIC(modelo_log_adq_con_cont_bic_ef)

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(log(Adquirencia) ~ controles[,-c(i+13)], datos_adq))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la columna 16
controles<-controles[,-(which.min(BIC)+13)]
variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 2
BIC<-c()
BIC[1]<-BIC(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(log(Adquirencia) ~ controles[,-c(i+13)], datos_adq))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la columna 26
controles<-controles[,-(which.min(BIC)+13)]
variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 3
BIC<-c()
BIC[1]<-BIC(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(log(Adquirencia) ~ controles[,-c(i+13)], datos_adq))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la columna 15
controles<-controles[,-(which.min(BIC)+13)]
variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 4
BIC<-c()
BIC[1]<-BIC(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(log(Adquirencia) ~ controles[,-c(i+13)], datos_adq))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la columna 15
controles<-controles[,-(which.min(BIC)+13)]
variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 5
BIC<-c()
BIC[1]<-BIC(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(log(Adquirencia) ~ controles[,-c(i+13)], datos_adq))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la columna 21
controles<-controles[,-(which.min(BIC)+13)]
variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 6
BIC<-c()
BIC[1]<-BIC(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(log(Adquirencia) ~ controles[,-c(i+13)], datos_adq))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la columna 20
controles<-controles[,-(which.min(BIC)+13)]
variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 7
BIC<-c()
BIC[1]<-BIC(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(log(Adquirencia) ~ controles[,-c(i+13)], datos_adq))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la columna 17
controles<-controles[,-(which.min(BIC)+13)]
variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 8
BIC<-c()
BIC[1]<-BIC(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(log(Adquirencia) ~ controles[,-c(i+13)], datos_adq))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la columna 21
controles<-controles[,-(which.min(BIC)+13)]
variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 9
BIC<-c()
BIC[1]<-BIC(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(log(Adquirencia) ~ controles[,-c(i+13)], datos_adq))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la columna 16
controles<-controles[,-(which.min(BIC)+13)]
variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 10
BIC<-c()
BIC[1]<-BIC(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(log(Adquirencia) ~ controles[,-c(i+13)], datos_adq))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la columna 16
controles<-controles[,-(which.min(BIC)+13)]
variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 11
BIC<-c()
BIC[1]<-BIC(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(log(Adquirencia) ~ controles[,-c(i+13)], datos_adq))  
}

min(BIC)<BIC[1]

[1] FALSE

#No se eliminan más columnas
controles4<-controles

#Variables a usar
variables_controles

[1] “Regulacion_intercambio” “Año_2010” “Año_2011”
[4] “Año_2012” “Año_2013” “Año_2014”
[7] “Año_2015” “Año_2016” “Año_2017”
[10] “Año_2018” “Año_2019” “Año_2020”
[13] “Año_2021” “Año_2022” “Pago_digital”
[16] “Densidad_Neg” “Valor_prom” “Europa”

# Se omiten los años 2010 al 2013 por colinealidad.
modelo_log_adq_con_cont_bic_ef<-lm(log(Adquirencia) ~ Regulacion_intercambio + Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 + Año_2022 + Pago_digital + Densidad_Neg + Valor_prom + Europa, datos_adq)

modelo_log_adq_con_cont_bic_ef_corr_hc<-coeftest(modelo_log_adq_con_cont_bic_ef, vcov. = vcovHC(modelo_log_adq_con_cont_bic_ef, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_log_adq_con_cont_bic_ef_corr_hac<-coeftest(modelo_log_adq_con_cont_bic_ef, vcov. = vcovHAC(modelo_log_adq_con_cont_bic_ef, adjust = TRUE, sandwich = TRUE))

stargazer(modelo_log_adq_con_cont_bic_ef, modelo_log_adq_con_cont_bic_ef_corr_hc, type = "html", 
          title = "Regresión sobre el logaritmo de la tasa de adquirencia según BIC con efectos fijos de tiempo",
          column.labels = c("MCO","MCO HC"), model.names = F,
          dep.var.labels = c("Tasa adquirencia", "Tasa adquirencia"), dep.var.caption = "Variable dependiente")
Regresión sobre el logaritmo de la tasa de adquirencia según BIC con efectos fijos de tiempo
Variable dependiente
Tasa adquirencia Tasa adquirencia
MCO MCO HC
(1) (2)
Regulacion_intercambio -0.314*** -0.314***
(0.088) (0.070)
Año_2014 -0.320 -0.320**
(0.255) (0.136)
Año_2015 -0.315 -0.315**
(0.246) (0.141)
Año_2016 -0.301 -0.301*
(0.226) (0.168)
Año_2017 -0.245 -0.245*
(0.208) (0.132)
Año_2018 -0.336 -0.336**
(0.228) (0.167)
Año_2019 -0.397* -0.397**
(0.223) (0.158)
Año_2020 -0.348 -0.348*
(0.221) (0.193)
Año_2021 -0.472* -0.472***
(0.242) (0.171)
Año_2022 0.413 0.413***
(0.373) (0.131)
Pago_digital -0.012*** -0.012***
(0.002) (0.002)
Densidad_Neg 0.018** 0.018
(0.009) (0.011)
Valor_prom -0.002** -0.002**
(0.001) (0.001)
Europa -0.602*** -0.602***
(0.104) (0.139)
Constant 2.007*** 2.007***
(0.228) (0.149)
Observations 87
R2 0.789
Adjusted R2 0.748
Residual Std. Error 0.316 (df = 72)
F Statistic 19.258*** (df = 14; 72)
Note: p<0.1; p<0.05; p<0.01

3.4 Inclusión de efectos no lineales en la regresión

# creación de variables cuadráticas:
datos<-datos %>% mutate(
  Cajero_Autom_sqrt = Cajero_Autom**2, 
  Crimen_sqrt = Crimen**2, 
  Cuenta_sqrt = Cuenta**2, 
  Credito_sqrt = Credito**2, 
  Debito_sqrt = Debito**2, 
  Densidad_Pob_sqrt = Densidad_Pob**2, 
  Densidad_Neg_sqrt = Densidad_Neg**2, 
  PIB_pc_PPA_sqrt = PIB_pc_PPA**2, 
  ICH_sqrt = ICH**2, 
  Pago_digital_sqrt = Pago_digital**2, 
  Valor_prom_sqr = Valor_prom**2
)

# Selección variables con AICC:  ----
modelo_adq_nolineal_con_cont_aicc<-lm(formula = Adquirencia ~ Regulacion_intercambio + Cajero_Autom + Crimen + Cuenta +
                                        Pago_digital + Debito + Credito + Densidad_Pob + Densidad_Neg + PIB_pc_PPA +
                                        ICH + Valor_prom + Europa + Asia_Este + Am_lat +
                                        Cajero_Autom_sqrt + Crimen_sqrt + Cuenta_sqrt + Credito_sqrt + Debito_sqrt + 
                                        Densidad_Pob_sqrt + Densidad_Neg_sqrt + PIB_pc_PPA_sqrt + ICH_sqrt + Pago_digital_sqrt + 
                                        Valor_prom_sqr, data= datos)

variables_controles<-c("Regulacion_intercambio", "Cajero_Autom", "Crimen", "Cuenta", "Pago_digital", "Debito", 
                       "Credito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH", "Valor_prom", "Europa", 
                       "Asia_Este", "Am_lat", "Cajero_Autom_sqrt", "Crimen_sqrt", "Cuenta_sqrt", "Credito_sqrt", "Debito_sqrt",
                       "Densidad_Pob_sqrt", "Densidad_Neg_sqrt", "PIB_pc_PPA_sqrt", "ICH_sqrt", "Pago_digital_sqrt", "Valor_prom_sqr")

controles<- datos %>% dplyr::select(c(variables_controles)) %>% as.matrix()

#Paso 1
AICC<-c()
AICC[1]<-aicc(modelo_adq_nolineal_con_cont_aicc)

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Credito’”

variables_controles<-variables_controles[-which.min(AICC)]

#Paso 2
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Europa’”

variables_controles<-variables_controles[-which.min(AICC)]

#Paso 3
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))

[1] “Se elimina por este criterio la variable: ‘PIB_pc_PPA_sqrt’”

variables_controles<-variables_controles[-which.min(AICC)]

#Paso 4
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))

[1] “Se elimina por este criterio la variable: ‘PIB_pc_PPA’”

variables_controles<-variables_controles[-which.min(AICC)]

#Paso 5
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Asia_Este’”

variables_controles<-variables_controles[-which.min(AICC)]

#Paso 6
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Cajero_Autom’”

variables_controles<-variables_controles[-which.min(AICC)]

#Paso 7
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Cajero_Autom_sqrt’”

variables_controles<-variables_controles[-which.min(AICC)]

#Paso 8
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Densidad_Neg’”

variables_controles<-variables_controles[-which.min(AICC)]

#Paso 9
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Credito_sqrt’”

variables_controles<-variables_controles[-which.min(AICC)]

#Paso 10
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Pago_digital’”

variables_controles<-variables_controles[-which.min(AICC)]

#Paso 11
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Crimen_sqrt’”

variables_controles<-variables_controles[-which.min(AICC)]

#Paso 12
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Valor_prom_sqr’”

variables_controles<-variables_controles[-which.min(AICC)]

#Paso 13
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Densidad_Pob’”

variables_controles<-variables_controles[-which.min(AICC)]

#Paso 14
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Densidad_Pob_sqrt’”

variables_controles<-variables_controles[-which.min(AICC)]

#Paso 15
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos))  
}

min(AICC)<AICC[1]

[1] FALSE

# El AICC ya no es menor, entonces no se eliminan columnas
controles1<-controles

# Deja las siguiente variables:
variables_controles

[1] “Regulacion_intercambio” “Crimen” “Cuenta”
[4] “Debito” “ICH” “Valor_prom”
[7] “Am_lat” “Cuenta_sqrt” “Debito_sqrt”
[10] “Densidad_Neg_sqrt” “ICH_sqrt” “Pago_digital_sqrt”

# Estimación del modelo
modelo_adq_nolineal_con_cont_aicc<-lm(formula = Adquirencia ~ Regulacion_intercambio + Crimen + Cuenta + Debito + 
                                        ICH + Valor_prom + Am_lat + Cuenta_sqrt + Debito_sqrt + Densidad_Neg_sqrt + 
                                        ICH_sqrt + Pago_digital_sqrt, data= datos)

modelo_adq_nolineal_con_cont_aicc_corr_hc<-coeftest(modelo_adq_nolineal_con_cont_aicc, vcov. = vcovHC(modelo_adq_nolineal_con_cont_aicc, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_adq_nolineal_con_cont_aicc_corr_hac<-coeftest(modelo_adq_nolineal_con_cont_aicc, vcov. = vcovHAC(modelo_adq_nolineal_con_cont_aicc, adjust = TRUE, sandwich = TRUE))

stargazer(modelo_adq_nolineal_con_cont_aicc, modelo_adq_nolineal_con_cont_aicc_corr_hc, type = "html", title = "Regresión no lineal sobre la tasa de adquirencia con todos los controles seleccionados con AICC, solo muestra con países regulados", column.labels = c("MCO","MCO HC"), model.names = F, dep.var.labels = c("Tasa adquirencia", "Tasa adquirencia"), dep.var.caption = "Variable dependiente")
Regresión no lineal sobre la tasa de adquirencia con todos los controles seleccionados con AICC, solo muestra con países regulados
Variable dependiente
Tasa adquirencia Tasa adquirencia
MCO MCO HC
(1) (2)
Regulacion_intercambio -0.424*** -0.424***
(0.124) (0.128)
Crimen -0.031*** -0.031***
(0.007) (0.010)
Cuenta -0.048 -0.048
(0.030) (0.042)
Debito -0.035* -0.035
(0.018) (0.036)
ICH -55.967*** -55.967***
(8.696) (7.877)
Valor_prom -0.005** -0.005*
(0.002) (0.002)
Am_lat 0.896*** 0.896***
(0.210) (0.278)
Cuenta_sqrt 0.001*** 0.001**
(0.0003) (0.0004)
Debito_sqrt 0.0003* 0.0003
(0.0002) (0.0003)
Densidad_Neg_sqrt 0.001** 0.001**
(0.001) (0.001)
ICH_sqrt 40.822*** 40.822***
(6.637) (5.894)
Pago_digital_sqrt -0.001*** -0.001***
(0.0001) (0.0002)
Constant 23.665*** 23.665***
(2.964) (3.008)
Observations 87
R2 0.829
Adjusted R2 0.801
Residual Std. Error 0.410 (df = 74)
F Statistic 29.833*** (df = 12; 74)
Note: p<0.1; p<0.05; p<0.01
# Pronóstico
# Sin regulación
pred_adq_nolineal_sin_reg_aicc <-predict(modelo_adq_nolineal_con_cont_aicc, newdata = datos, 
                                      interval = "prediction", level = 0.95, 
                                      type = "response")[which(datos$Codigo_Pais=="CRI")]
#Con regulación
# Se le agrega a CR la adquirencia
data_CR<-datos
data_CR[ which(datos$Codigo_Pais=="CRI"), which(names(datos)=="Regulacion_intercambio") ]<-1

pred_adq_nolineal_con_reg_aicc<-predict(modelo_adq_nolineal_con_cont_aicc, newdata = data_CR, 
                                      interval = "prediction", level = 0.95, 
                                      type = "response")[which(data_CR$Codigo_Pais=="CRI")]
# Selección modelo no lineal con BIC -----
modelo_adq_nolineal_con_cont_bic<-lm(formula = Adquirencia ~ Regulacion_intercambio + Cajero_Autom + Crimen + Cuenta +
                                        Pago_digital + Debito + Credito + Densidad_Pob + Densidad_Neg + PIB_pc_PPA +
                                        ICH + Valor_prom + Europa + Asia_Este + Am_lat +
                                        Cajero_Autom_sqrt + Crimen_sqrt + Cuenta_sqrt + Credito_sqrt + Debito_sqrt + 
                                        Densidad_Pob_sqrt + Densidad_Neg_sqrt + PIB_pc_PPA_sqrt + ICH_sqrt + Pago_digital_sqrt + 
                                        Valor_prom_sqr, data= datos)

variables_controles<-c("Regulacion_intercambio", "Cajero_Autom", "Crimen", "Cuenta", "Pago_digital", "Debito", 
                       "Credito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH", "Valor_prom", "Europa", 
                       "Asia_Este", "Am_lat", "Cajero_Autom_sqrt", "Crimen_sqrt", "Cuenta_sqrt", "Credito_sqrt", "Debito_sqrt",
                       "Densidad_Pob_sqrt", "Densidad_Neg_sqrt", "PIB_pc_PPA_sqrt", "ICH_sqrt", "Pago_digital_sqrt", "Valor_prom_sqr")

controles<- datos %>% dplyr::select(c(variables_controles)) %>% as.matrix()

#Paso 1
BIC<-c()
BIC[1]<-BIC(modelo_adq_nolineal_con_cont_bic)

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Credito’”

variables_controles<-variables_controles[-which.min(BIC)]

#Paso 2
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Europa’”

variables_controles<-variables_controles[-which.min(BIC)]

#Paso 3
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))

[1] “Se elimina por este criterio la variable: ‘PIB_pc_PPA_sqrt’”

variables_controles<-variables_controles[-which.min(BIC)]

#Paso 4
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))

[1] “Se elimina por este criterio la variable: ‘PIB_pc_PPA’”

variables_controles<-variables_controles[-which.min(BIC)]

#Paso 5
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Asia_Este’”

variables_controles<-variables_controles[-which.min(BIC)]

#Paso 6
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Cajero_Autom’”

variables_controles<-variables_controles[-which.min(BIC)]

#Paso 7
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Cajero_Autom_sqrt’”

variables_controles<-variables_controles[-which.min(BIC)]

#Paso 8
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Densidad_Neg’”

variables_controles<-variables_controles[-which.min(BIC)]

#Paso 9
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Credito_sqrt’”

variables_controles<-variables_controles[-which.min(BIC)]

#Paso 10
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Pago_digital’”

variables_controles<-variables_controles[-which.min(BIC)]

#Paso 11
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Crimen_sqrt’”

variables_controles<-variables_controles[-which.min(BIC)]

#Paso 12
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Valor_prom_sqr’”

variables_controles<-variables_controles[-which.min(BIC)]

#Paso 13
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Densidad_Pob’”

variables_controles<-variables_controles[-which.min(BIC)]

#Paso 14
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Densidad_Pob_sqrt’”

variables_controles<-variables_controles[-which.min(BIC)]

#Paso 15
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Cuenta’”

variables_controles<-variables_controles[-which.min(BIC)]

#Paso 16
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos))  
}

min(BIC)<BIC[1]

[1] FALSE

# El BIC ya no es menor, entonces no se eliminan columnas
controles1<-controles

# Deja las siguiente variables:
variables_controles

[1] “Regulacion_intercambio” “Crimen” “Debito”
[4] “ICH” “Valor_prom” “Am_lat”
[7] “Cuenta_sqrt” “Debito_sqrt” “Densidad_Neg_sqrt”
[10] “ICH_sqrt” “Pago_digital_sqrt”

# Estimación del modelo
modelo_adq_nolineal_con_cont_bic<-lm(formula = Adquirencia ~ Regulacion_intercambio + Crimen + Debito + ICH + 
                                       Valor_prom + Am_lat + Cuenta_sqrt + Debito_sqrt  + Densidad_Neg_sqrt  + 
                                       ICH_sqrt + Pago_digital_sqrt, data= datos)

modelo_adq_nolineal_con_cont_bic_corr_hc<-coeftest(modelo_adq_nolineal_con_cont_aicc, vcov. = vcovHC(modelo_adq_nolineal_con_cont_bic, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_adq_nolineal_con_cont_bic_corr_hac<-coeftest(modelo_adq_nolineal_con_cont_bic, vcov. = vcovHAC(modelo_adq_nolineal_con_cont_bic, adjust = TRUE, sandwich = TRUE))

stargazer(modelo_adq_nolineal_con_cont_bic, modelo_adq_nolineal_con_cont_bic_corr_hc, type = "html", title = "Regresión no lineal sobre la tasa de adquirencia con todos los controles seleccionados con BIC, solo muestra con países regulados",
          column.labels = c("MCO","MCO HC"), model.names = F, dep.var.labels = c("Tasa adquirencia", "Tasa adquirencia"),
          dep.var.caption = "Variable dependiente")
Regresión no lineal sobre la tasa de adquirencia con todos los controles seleccionados con BIC, solo muestra con países regulados
Variable dependiente
Tasa adquirencia Tasa adquirencia
MCO MCO HC
(1) (2)
Regulacion_intercambio -0.382*** -0.424***
(0.122) (0.125)
Crimen -0.030*** -0.031***
(0.007) (0.010)
Debito -0.050*** -0.035
(0.016) (0.027)
ICH -54.206*** -55.967***
(8.720) (8.180)
Valor_prom -0.004** -0.005*
(0.002) (0.003)
Am_lat 0.897*** 0.896***
(0.212) (0.273)
Cuenta_sqrt 0.0004*** 0.001***
(0.0001) (0.0002)
Debito_sqrt 0.0004*** 0.0003
(0.0001) (0.0002)
Densidad_Neg_sqrt 0.001** 0.001**
(0.001) (0.001)
ICH_sqrt 39.966*** 40.822***
(6.686) (6.146)
Pago_digital_sqrt -0.001*** -0.001***
(0.0001) (0.0002)
Constant 21.756*** 23.665***
(2.747) (3.037)
Observations 87
R2 0.823
Adjusted R2 0.797
Residual Std. Error 0.414 (df = 75)
F Statistic 31.625*** (df = 11; 75)
Note: p<0.1; p<0.05; p<0.01
# Pronóstico
# Sin regulación
pred_adq_nolineal_sin_reg_bic <-predict(modelo_adq_nolineal_con_cont_bic, newdata = datos, 
                                      interval = "prediction", level = 0.95, 
                                      type = "response")[which(datos$Codigo_Pais=="CRI")]
#Con regulación
pred_adq_nolineal_con_reg_bic<-predict(modelo_adq_nolineal_con_cont_bic, newdata = data_CR, 
                                      interval = "prediction", level = 0.95, 
                                      type = "response")[which(data_CR$Codigo_Pais=="CRI")]
# SELECCIÓN DE MODELOS CON EFECTOS DE TIEMPO: -----

#Se elimina la variable intercambio de los datos para evitar sus NAs
datos_adq<-datos %>% dplyr::select(-Intercambio) %>% na.omit()

# Selección variables con AICC:  
modelo_adq_nolineal_con_cont_ef_aicc<-lm(formula = Adquirencia ~ Regulacion_intercambio + Año_2014 + Año_2015 + 
                                        Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 + 
                                        Año_2022 + Cajero_Autom + Crimen + Cuenta +
                                        Pago_digital + Debito + Credito + Densidad_Pob + Densidad_Neg + PIB_pc_PPA +
                                        ICH + Valor_prom + Europa + Asia_Este + Am_lat +
                                        Cajero_Autom_sqrt + Crimen_sqrt + Cuenta_sqrt + Credito_sqrt + Debito_sqrt + 
                                        Densidad_Pob_sqrt + Densidad_Neg_sqrt + PIB_pc_PPA_sqrt + ICH_sqrt + Pago_digital_sqrt + 
                                        Valor_prom_sqr, data= datos_adq)

variables_controles<-c("Regulacion_intercambio", "Año_2014", "Año_2015", "Año_2016", "Año_2017", "Año_2018", "Año_2019",
                       "Año_2020", "Año_2021", "Año_2022", "Cajero_Autom", "Crimen", "Cuenta", "Pago_digital", "Debito",
                       "Credito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH", "Valor_prom", "Europa", "Asia_Este",
                       "Am_lat", "Cajero_Autom_sqrt", "Crimen_sqrt", "Cuenta_sqrt", "Credito_sqrt", "Debito_sqrt",
                       "Densidad_Pob_sqrt", "Densidad_Neg_sqrt", "PIB_pc_PPA_sqrt", "ICH_sqrt", "Pago_digital_sqrt",
                       "Valor_prom_sqr")

controles<- datos_adq %>% dplyr::select(c(variables_controles)) %>% as.matrix()


#Paso 1
AICC<-c()
AICC[1]<-aicc(modelo_adq_nolineal_con_cont_ef_aicc)

for (i in 2:(ncol(controles)-8)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+9)], datos_adq))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+9)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+9],"' "))

[1] “Se elimina por este criterio la variable: ‘Asia_Este’”

variables_controles<-variables_controles[-(which.min(AICC)+9)]

#Paso 2
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-8)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+9)], datos_adq))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+9)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+9],"' "))

[1] “Se elimina por este criterio la variable: ‘Densidad_Neg’”

variables_controles<-variables_controles[-(which.min(AICC)+9)]

#Paso 3
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-8)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+9)], datos_adq))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+9)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+9],"' "))

[1] “Se elimina por este criterio la variable: ‘Pago_digital’”

variables_controles<-variables_controles[-(which.min(AICC)+9)]

#Paso 4
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-8)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+9)], datos_adq))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+9)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+9],"' "))

[1] “Se elimina por este criterio la variable: ‘Credito_sqrt’”

variables_controles<-variables_controles[-(which.min(AICC)+9)]

#Paso 5
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-8)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+9)], datos_adq))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+9)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+9],"' "))

[1] “Se elimina por este criterio la variable: ‘Europa’”

variables_controles<-variables_controles[-(which.min(AICC)+9)]

#Paso 6
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-8)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+9)], datos_adq))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+9)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+9],"' "))

[1] “Se elimina por este criterio la variable: ‘Crimen_sqrt’”

variables_controles<-variables_controles[-(which.min(AICC)+9)]

#Paso 7
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-8)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+9)], datos_adq))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+9)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+9],"' "))

[1] “Se elimina por este criterio la variable: ‘Debito’”

variables_controles<-variables_controles[-(which.min(AICC)+9)]


#Paso 8
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-8)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+9)], datos_adq))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+9)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+9],"' "))

[1] “Se elimina por este criterio la variable: ‘Debito_sqrt’”

variables_controles<-variables_controles[-(which.min(AICC)+9)]

#Paso 9
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-8)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+9)], datos_adq))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+9)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+9],"' "))

[1] “Se elimina por este criterio la variable: ‘Cajero_Autom’”

variables_controles<-variables_controles[-(which.min(AICC)+9)]

#Paso 10
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-8)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+9)], datos_adq))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+9)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+9],"' "))

[1] “Se elimina por este criterio la variable: ‘Cajero_Autom_sqrt’”

variables_controles<-variables_controles[-(which.min(AICC)+9)]

#Paso 11
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-8)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+9)], datos_adq))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+9)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+9],"' "))

[1] “Se elimina por este criterio la variable: ‘Credito’”

variables_controles<-variables_controles[-(which.min(AICC)+9)]

#Paso 12
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-8)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+9)], datos_adq))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+9)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+9],"' "))

[1] “Se elimina por este criterio la variable: ‘PIB_pc_PPA_sqrt’”

variables_controles<-variables_controles[-(which.min(AICC)+9)]

#Paso 13
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-8)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+9)], datos_adq))  
}

min(AICC)<AICC[1]

[1] TRUE

# El AICx ya no es menor, entonces no se eliminan columnas
controles1<-controles

# Deja las siguiente variables:
variables_controles

[1] “Regulacion_intercambio” “Año_2014” “Año_2015”
[4] “Año_2016” “Año_2017” “Año_2018”
[7] “Año_2019” “Año_2020” “Año_2021”
[10] “Año_2022” “Crimen” “Cuenta”
[13] “Densidad_Pob” “PIB_pc_PPA” “ICH”
[16] “Valor_prom” “Am_lat” “Cuenta_sqrt”
[19] “Densidad_Pob_sqrt” “Densidad_Neg_sqrt” “ICH_sqrt”
[22] “Pago_digital_sqrt” “Valor_prom_sqr”

# Estimación del modelo (cambiar con el modelo seleccionado)
modelo_adq_nolineal_con_cont_ef_aicc<-lm(formula = Adquirencia ~ Regulacion_intercambio + Año_2014 + Año_2015 + 
                                        Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 + 
                                        Año_2022 + Crimen + Cuenta + Densidad_Pob + PIB_pc_PPA +
                                        ICH + Valor_prom + Am_lat + Cuenta_sqrt + Densidad_Pob_sqrt + 
                                        Densidad_Neg_sqrt + ICH_sqrt + Pago_digital_sqrt + Valor_prom_sqr, data= datos)

modelo_adq_nolineal_con_cont_ef_aicc_corr_hc<-coeftest(modelo_adq_nolineal_con_cont_ef_aicc, vcov. = vcovHC(modelo_adq_nolineal_con_cont_ef_aicc, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_adq_nolineal_con_cont_ef_aicc_corr_hac<-coeftest(modelo_adq_nolineal_con_cont_ef_aicc, vcov. = vcovHAC(modelo_adq_nolineal_con_cont_ef_aicc, adjust = TRUE, sandwich = TRUE))

stargazer(modelo_adq_nolineal_con_cont_ef_aicc, modelo_adq_nolineal_con_cont_ef_aicc_corr_hc, 
          type = "html", 
          title = "Regresión no lineal sobre la tasa de adquirencia con efectos de tiempo y todos los controles seleccionados con BIC, solo muestra con países regulados",
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa adquirencia", "Tasa adquirencia"), 
          dep.var.caption = "Variable dependiente")
Regresión no lineal sobre la tasa de adquirencia con efectos de tiempo y todos los controles seleccionados con BIC, solo muestra con países regulados
Variable dependiente
Tasa adquirencia Tasa adquirencia
MCO MCO HC
(1) (2)
Regulacion_intercambio -0.307** -0.307**
(0.120) (0.119)
Año_2014 -0.413 -0.413
(0.309) (0.271)
Año_2015 -0.461 -0.461*
(0.306) (0.242)
Año_2016 -0.241 -0.241
(0.272) (0.249)
Año_2017 -0.351 -0.351
(0.257) (0.217)
Año_2018 -0.229 -0.229
(0.267) (0.229)
Año_2019 -0.471* -0.471**
(0.265) (0.209)
Año_2020 -0.327 -0.327
(0.285) (0.267)
Año_2021 -0.353 -0.353
(0.301) (0.250)
Año_2022 1.739*** 1.739***
(0.469) (0.249)
Crimen -0.026*** -0.026***
(0.007) (0.006)
Cuenta -0.086*** -0.086***
(0.024) (0.030)
Densidad_Pob 0.001** 0.001
(0.001) (0.001)
PIB_pc_PPA -0.00000 -0.00000
(0.00000) (0.00000)
ICH -53.688*** -53.688***
(7.775) (6.718)
Valor_prom -0.015** -0.015*
(0.006) (0.007)
Am_lat 1.010*** 1.010***
(0.208) (0.279)
Cuenta_sqrt 0.001*** 0.001***
(0.0003) (0.0003)
Densidad_Pob_sqrt -0.00000** -0.00000
(0.00000) (0.00000)
Densidad_Neg_sqrt 0.002*** 0.002***
(0.001) (0.001)
ICH_sqrt 39.200*** 39.200***
(5.960) (5.090)
Pago_digital_sqrt -0.0004*** -0.0004***
(0.0001) (0.0002)
Valor_prom_sqr 0.0001* 0.0001
(0.00003) (0.00004)
Constant 23.747*** 23.747***
(2.732) (2.882)
Observations 87
R2 0.893
Adjusted R2 0.853
Residual Std. Error 0.352 (df = 63)
F Statistic 22.756*** (df = 23; 63)
Note: p<0.1; p<0.05; p<0.01
# Pronóstico
# Sin regulación
pred_adq_nolineal_sin_reg_ef_aicc <-predict(modelo_adq_nolineal_con_cont_ef_aicc, newdata = datos, 
                                      interval = "prediction", level = 0.95, 
                                      type = "response")[which(datos$Codigo_Pais=="CRI")]

round((pred_adq_nolineal_sin_reg_ef_aicc+(-0.25*0.03) - (1*0.06) - (1.25*0.05) - (1.5*0.02) - (1.75*0.05))/(0.71 + 0.08),2)

[1] 2.6

#Con regulación
pred_adq_nolineal_con_reg_ef_aicc<-predict(modelo_adq_nolineal_con_cont_ef_aicc, newdata = data_CR, 
                                      interval = "prediction", level = 0.95, 
                                      type = "response")[which(data_CR$Codigo_Pais=="CRI")]
# Con ajuste
pred_adq_nolineal_con_reg_ef_aicc_ajus<-round((pred_adq_nolineal_con_reg_ef_aicc+(-0.25*0.03) - (1*0.06) - (1.25*0.05) - (1.5*0.02) - (1.75*0.05))/(0.71 + 0.08),2)
pred_adq_nolineal_con_reg_ef_aicc_ajus

[1] 2.21

# Selección variables con BIC efectos de tiempo: ----

modelo_adq_nolineal_con_cont_ef_bic<-lm(formula = Adquirencia ~ Regulacion_intercambio + Año_2014 + Año_2015 + 
                                           Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 + 
                                           Año_2022 + Cajero_Autom + Crimen + Cuenta +
                                           Pago_digital + Debito + Credito + Densidad_Pob + Densidad_Neg + PIB_pc_PPA +
                                           ICH + Valor_prom + Europa + Asia_Este + Am_lat +
                                           Cajero_Autom_sqrt + Crimen_sqrt + Cuenta_sqrt + Credito_sqrt + Debito_sqrt + 
                                           Densidad_Pob_sqrt + Densidad_Neg_sqrt + PIB_pc_PPA_sqrt + ICH_sqrt + Pago_digital_sqrt + 
                                           Valor_prom_sqr, data= datos)

variables_controles<-c("Regulacion_intercambio", "Año_2014", "Año_2015", "Año_2016", "Año_2017", "Año_2018", "Año_2019",
                       "Año_2020", "Año_2021", "Año_2022", "Cajero_Autom", "Crimen", "Cuenta", "Pago_digital", "Debito",
                       "Credito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH", "Valor_prom", "Europa", "Asia_Este",
                       "Am_lat", "Cajero_Autom_sqrt", "Crimen_sqrt", "Cuenta_sqrt", "Credito_sqrt", "Debito_sqrt",
                       "Densidad_Pob_sqrt", "Densidad_Neg_sqrt", "PIB_pc_PPA_sqrt", "ICH_sqrt", "Pago_digital_sqrt",
                       "Valor_prom_sqr")

controles<- datos %>% dplyr::select(c(variables_controles)) %>% as.matrix()


#Paso 1
BIC<-c()
BIC[1]<-BIC(modelo_adq_nolineal_con_cont_ef_bic)

for (i in 2:(ncol(controles)-8)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+9)], datos))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+9)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+9],"' "))

[1] “Se elimina por este criterio la variable: ‘Asia_Este’”

variables_controles<-variables_controles[-(which.min(BIC)+9)]

#Paso 2
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos))

for (i in 2:(ncol(controles)-8)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+9)], datos))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+9)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+9],"' "))

[1] “Se elimina por este criterio la variable: ‘Densidad_Neg’”

variables_controles<-variables_controles[-(which.min(BIC)+9)]

#Paso 3
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos))

for (i in 2:(ncol(controles)-8)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+9)], datos))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+9)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+9],"' "))

[1] “Se elimina por este criterio la variable: ‘Pago_digital’”

variables_controles<-variables_controles[-(which.min(BIC)+9)]

#Paso 4
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos))

for (i in 2:(ncol(controles)-8)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+9)], datos))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+9)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+9],"' "))

[1] “Se elimina por este criterio la variable: ‘Credito_sqrt’”

variables_controles<-variables_controles[-(which.min(BIC)+9)]

#Paso 5
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos))

for (i in 2:(ncol(controles)-8)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+9)], datos))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+9)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+9],"' "))

[1] “Se elimina por este criterio la variable: ‘Europa’”

variables_controles<-variables_controles[-(which.min(BIC)+9)]

#Paso 6
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos))

for (i in 2:(ncol(controles)-8)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+9)], datos))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+9)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+9],"' "))

[1] “Se elimina por este criterio la variable: ‘Crimen_sqrt’”

variables_controles<-variables_controles[-(which.min(BIC)+9)]

#Paso 7
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos))

for (i in 2:(ncol(controles)-8)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+9)], datos))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+9)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+9],"' "))

[1] “Se elimina por este criterio la variable: ‘Debito’”

variables_controles<-variables_controles[-(which.min(BIC)+9)]


#Paso 8
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos))

for (i in 2:(ncol(controles)-8)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+9)], datos))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+9)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+9],"' "))

[1] “Se elimina por este criterio la variable: ‘Debito_sqrt’”

variables_controles<-variables_controles[-(which.min(BIC)+9)]

#Paso 9
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos))

for (i in 2:(ncol(controles)-8)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+9)], datos))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+9)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+9],"' "))

[1] “Se elimina por este criterio la variable: ‘Cajero_Autom’”

variables_controles<-variables_controles[-(which.min(BIC)+9)]

#Paso 10
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos))

for (i in 2:(ncol(controles)-8)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+9)], datos))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+9)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+9],"' "))

[1] “Se elimina por este criterio la variable: ‘Cajero_Autom_sqrt’”

variables_controles<-variables_controles[-(which.min(BIC)+9)]

#Paso 11
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos))

for (i in 2:(ncol(controles)-8)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+9)], datos))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+9)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+9],"' "))

[1] “Se elimina por este criterio la variable: ‘Credito’”

variables_controles<-variables_controles[-(which.min(BIC)+9)]

#Paso 12
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos))

for (i in 2:(ncol(controles)-8)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+9)], datos))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+9)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+9],"' "))

[1] “Se elimina por este criterio la variable: ‘PIB_pc_PPA_sqrt’”

variables_controles<-variables_controles[-(which.min(BIC)+9)]

#Paso 13
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos))

for (i in 2:(ncol(controles)-8)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+9)], datos))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+9)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+9],"' "))

[1] “Se elimina por este criterio la variable: ‘PIB_pc_PPA’”

variables_controles<-variables_controles[-(which.min(BIC)+9)]

#Paso 14
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos))

for (i in 2:(ncol(controles)-8)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+9)], datos))  
}

min(BIC)<BIC[1]

[1] FALSE

# El BIC ya no es menor, entonces no se eliminan columnas
controles1<-controles

# Deja las siguiente variables:
variables_controles

[1] “Regulacion_intercambio” “Año_2014” “Año_2015”
[4] “Año_2016” “Año_2017” “Año_2018”
[7] “Año_2019” “Año_2020” “Año_2021”
[10] “Año_2022” “Crimen” “Cuenta”
[13] “Densidad_Pob” “ICH” “Valor_prom”
[16] “Am_lat” “Cuenta_sqrt” “Densidad_Pob_sqrt”
[19] “Densidad_Neg_sqrt” “ICH_sqrt” “Pago_digital_sqrt”
[22] “Valor_prom_sqr”

# Estimación del modelo (cambiar con el modelo seleccionado)
modelo_adq_nolineal_con_cont_ef_bic<-lm(formula = Adquirencia ~ Regulacion_intercambio + Año_2014 + Año_2015 + 
                                        Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 + 
                                        Año_2022 + Crimen + Cuenta + Densidad_Pob + ICH + Valor_prom + Am_lat +
                                        Cuenta_sqrt + Densidad_Pob_sqrt + Densidad_Neg_sqrt + ICH_sqrt + 
                                        Pago_digital_sqrt + Valor_prom_sqr, data= datos)
# Pronóstico
# Sin regulación
pred_adq_nolineal_sin_reg_ef_bic <-predict(modelo_adq_nolineal_con_cont_ef_bic, newdata = datos, 
                                      interval = "prediction", level = 0.95, 
                                      type = "response")[which(datos$Codigo_Pais=="CRI")]

round((pred_adq_nolineal_sin_reg_ef_bic+(-0.25*0.03) - (1*0.06) - (1.25*0.05) - (1.5*0.02) - (1.75*0.05))/(0.71 + 0.08),2)

[1] 2.62

# promedio
# Promedio
pred_adq_nolineal_sin_reg_mean<-mean(pred_adq_nolineal_sin_reg_aicc,pred_adq_nolineal_sin_reg_bic,pred_adq_nolineal_sin_reg_ef_aicc,pred_adq_nolineal_sin_reg_ef_bic)

#Con regulación
pred_adq_nolineal_con_reg_ef_bic<-predict(modelo_adq_nolineal_con_cont_ef_bic, newdata = data_CR, 
                                      interval = "prediction", level = 0.95, 
                                      type = "response")[which(data_CR$Codigo_Pais=="CRI")]
# Con ajuste
pred_adq_nolineal_con_reg_ef_bic_ajus<-round((pred_adq_nolineal_con_reg_ef_bic+(-0.25*0.03) - (1*0.06) - (1.25*0.05) - (1.5*0.02) - (1.75*0.05))/(0.71 + 0.08),2)

# Promedio
pred_adq_nolineal_con_reg_mean<-mean(pred_adq_nolineal_con_reg_aicc,pred_adq_nolineal_con_reg_bic,pred_adq_nolineal_con_reg_ef_aicc,pred_adq_nolineal_con_reg_ef_bic)
# (-0.25*0.03) - (1*0.06) - (1.25*0.05) - (1.5*0.02) - (1.75*0.05) = -0.27
#(0.71 + 0.08) = 0.79
pred_adq_nolineal_con_reg_mean_ajust<-round((pred_adq_nolineal_con_reg_mean - 0.27)/(0.79),2)
pred_adq_nolineal_con_reg_mean_ajust

[1] 2.01

3.5 Método bootstrap

En este caso se usan los criterios de información AIC (no tiene corrección de muestras pequeñas) y BIC para su comparación. Ambos criterios brindan resultados similares. Además, no se incluyen efectos fijos de tiempo. Esto difiere respecto a su implementación en Stata, donde también se estiman también los modelos que incorporan efectos fijos de tiempo, y se utiliza el AICc. Sin embargo, los resultados son similares.

# Datos
datos_adq<-datos %>% dplyr::select(-Intercambio) %>% na.omit()

library(bootStepAIC)
### SELECCIÓN CON AIC
set.seed(1)
#modelo inicial con todos los controles
modelo_adq_con_cont<-lm(Adquirencia ~ Regulacion_intercambio + Cajero_Autom +
                          Crimen + Cuenta + Debito + Credito + Densidad_Pob +
                          Densidad_Neg + PIB_pc_PPA + ICH + Europa + Asia_Este + 
                          Am_lat + Valor_prom + Pago_digital, data = datos_adq)

# SIN REGLUACIÓN
n=1000 # cantidad de reemuestreos con bootstrap
m=bootStepAIC::boot.stepAIC(modelo_adq_con_cont,data = datos_adq,B=n)
predicciones<-as.numeric()
for (i in 1:n) {
coefs = m$BootStepAIC[[i]]  
#Sin regulación
predicciones[i]<-predict(coefs,newdata=datos_adq,type="response")[which(data_CR$Codigo_Pais=="CRI")]
}
pred_adq_bootstrap_sin_reg_con_cont_aic<-median(predicciones)

# CON REGULACIÓN
n=1000 # cantidad de reemuestreos con bootstrap
m=bootStepAIC::boot.stepAIC(modelo_adq_con_cont,data = datos_adq,B=n)
predicciones<-as.numeric()
for (i in 1:n) {
coefs = m$BootStepAIC[[i]]  
#con regulación
predicciones[i]<-predict(coefs,newdata=data_CR,type="response")[which(data_CR$Codigo_Pais=="CRI")]
}
# Ajustes por fuera de rango:
# mayor a 2
#gen Adquirencia_adj =  (Adquirencia - (1*0.09) - (1.25*0.05) - (1.5*0.02) - (1.75*0.05) - (2*0.08))/(0.71)
predicciones2<-ifelse(predicciones>2,
                      (predicciones- (1*0.09) - (1.25*0.05) - (1.5*0.02) - (1.75*0.05) - (2*0.08))/(0.71),
                      predicciones) 
# mayor a 1.75 y menor o igual a 2
#if Adquirencia_adj<=2
#replace Adquirencia_adj = (Adquirencia - (1*0.09) - (1.25*0.05) - (1.5*0.02) - (1.75*0.05) )/(0.71 + 0.08)
predicciones2<-ifelse(predicciones2> 1.75 & predicciones2<=2,
                      (predicciones2 - (1*0.09) - (1.25*0.05) - (1.5*0.02) - (1.75*0.05) )/(0.71 + 0.08),
                      predicciones2)
# mayor a 1.5 y menor o igual a 1.75
#if Adquirencia_adj<=1.75
#replace Adquirencia_adj = (Adquirencia - (1*0.09) - (1.25*0.05) - (1.5*0.02) )/(0.71 + 0.08 + 0.05)
predicciones2<-ifelse(predicciones2> 1.5 & predicciones2<=1.75,
                      (predicciones2 - (1*0.09) - (1.25*0.05) - (1.5*0.02) )/(0.71 + 0.08 + 0.05),
                      predicciones2)
# mayor a 1.25 y menor o igual a 1.5
#if Adquirencia_adj<=1.5: replace Adquirencia_adj = (Adquirencia - (1*0.09) - (1.25*0.05) )/(0.71 + 0.08 + 0.05 + 0.02)
predicciones2<-ifelse(predicciones2> 1.25 & predicciones2<=1.5,
                      (predicciones2 - (1*0.09) - (1.25*0.05) )/(0.71 + 0.08 + 0.05 + 0.02),
                      predicciones2)

# mayor a 1 y menor o igual a 1.25 
#if Adquirencia_adj<=1.25: replace Adquirencia_adj = (Adquirencia- (1*0.09))/(0.71 + 0.08 + 0.05 + 0.02 + 0.05)
predicciones2<-ifelse(predicciones2> 1 & predicciones2<=1.25,
                      (predicciones2 - (1*0.09))/(0.71 + 0.08 + 0.05 + 0.02 + 0.05),
                      predicciones2)
# menor a 1 se deja igual.
#if Adquirencia_adj<=1 # sin ajuste
# mostrar solo con ajustes.

#Visualización
resul<-as.data.frame(cbind(mean(predicciones2),
                           median(predicciones2),
                           mean(predicciones2)-1.96*sd(predicciones2),
                           mean(predicciones2)+1.96*sd(predicciones2)
                           )) %>% round(3)
names(resul)<-c("Promedio","Mediana","2.5%","97.5%")
DT::datatable(resul,rownames=c("Tasa de adquirencia ajustada"),caption = "Resultados de bootstrap para modelo lineal de adquirencia con regulación y con la selección de controles por AIC", options = list(dom = 't'))
# pronóstico promedio con regulación
pred_adq_bootstrap_con_reg_con_cont_aic<-median(predicciones2)
# Gráfica de los pronósticos
fig<-plot_ly(x = ~predicciones2, type = "histogram") %>%
  layout(xaxis = list(title = "Comisión de adquirencia"),
         yaxis = list(title ="Frecuencia"),
         title = "Pronóstico AIC con boostrap (n=1000)")
fig
## Selección con BIC modelo con controles
#Retomando el modelo inicial con controles
modelo_adq_con_cont<-lm(Adquirencia ~ Regulacion_intercambio + Cajero_Autom +
                          Crimen + Cuenta + Debito + Credito + Densidad_Pob +
                          Densidad_Neg + PIB_pc_PPA + ICH + Europa + Asia_Este + 
                          Am_lat + Valor_prom + Pago_digital, data = datos_adq)
# Se debe fijar una semilla

# Bootrap con BIC
set.seed(1)
# SIN REGLUACIÓN
n=1000 # cantidad de reemuestreo con bootstrap
m=bootStepAIC::boot.stepAIC(modelo_adq_con_cont,data = datos_adq,B=n,
                              k=log(nrow(datos)) ) # con esto se hace el BIC
predicciones<-as.numeric()
for (i in 1:n) {
coefs = m$BootStepAIC[[i]]  
#con regulación
predicciones[i]<-predict(coefs,newdata=datos,type="response")[which(data_CR$Codigo_Pais=="CRI")]
}
pred_adq_bootstrap_sin_reg_con_cont_bic<-median(predicciones)
# CON REGULACIÓN
n=1000 # cantidad de reemuestreo con bootstrap
m=bootStepAIC::boot.stepAIC(modelo_adq_con_cont,data = datos_adq,B=n,
                              k=log(nrow(datos)) ) # con esto se hace el BIC
predicciones<-as.numeric()
for (i in 1:n) {
coefs = m$BootStepAIC[[i]]  
#con regulación
predicciones[i]<-predict(coefs,newdata=data_CR,type="response")[which(data_CR$Codigo_Pais=="CRI")]
}
# Ajustes por fuera de rango:
# mayor a 2
#gen Adquirencia_adj =  (Adquirencia - (1*0.09) - (1.25*0.05) - (1.5*0.02) - (1.75*0.05) - (2*0.08))/(0.71)
predicciones2<-ifelse(predicciones>2,
                      (predicciones- (1*0.09) - (1.25*0.05) - (1.5*0.02) - (1.75*0.05) - (2*0.08))/(0.71),
                      predicciones) 
# mayor a 1.75 y menor o igual a 2
#if Adquirencia_adj<=2
#replace Adquirencia_adj = (Adquirencia - (1*0.09) - (1.25*0.05) - (1.5*0.02) - (1.75*0.05) )/(0.71 + 0.08)
predicciones2<-ifelse(predicciones2> 1.75 & predicciones2<=2,
                      (predicciones2 - (1*0.09) - (1.25*0.05) - (1.5*0.02) - (1.75*0.05) )/(0.71 + 0.08),
                      predicciones2)
# mayor a 1.5 y menor o igual a 1.75
#if Adquirencia_adj<=1.75
#replace Adquirencia_adj = (Adquirencia - (1*0.09) - (1.25*0.05) - (1.5*0.02) )/(0.71 + 0.08 + 0.05)
predicciones2<-ifelse(predicciones2> 1.5 & predicciones2<=1.75,
                      (predicciones2 - (1*0.09) - (1.25*0.05) - (1.5*0.02) )/(0.71 + 0.08 + 0.05),
                      predicciones2)
# mayor a 1.25 y menor o igual a 1.5
#if Adquirencia_adj<=1.5: replace Adquirencia_adj = (Adquirencia - (1*0.09) - (1.25*0.05) )/(0.71 + 0.08 + 0.05 + 0.02)
predicciones2<-ifelse(predicciones2> 1.25 & predicciones2<=1.5,
                      (predicciones2 - (1*0.09) - (1.25*0.05) )/(0.71 + 0.08 + 0.05 + 0.02),
                      predicciones2)

# mayor a 1 y menor o igual a 1.25 
#if Adquirencia_adj<=1.25: replace Adquirencia_adj = (Adquirencia- (1*0.09))/(0.71 + 0.08 + 0.05 + 0.02 + 0.05)
predicciones2<-ifelse(predicciones2> 1 & predicciones2<=1.25,
                      (predicciones2 - (1*0.09))/(0.71 + 0.08 + 0.05 + 0.02 + 0.05),
                      predicciones2)
# menor a 1 se deja igual.
#if Adquirencia_adj<=1 # sin ajuste
# mostrar solo con ajustes.

#Visualización
resul<-as.data.frame(cbind(mean(predicciones2),
                           median(predicciones2),
                           mean(predicciones2)-1.96*sd(predicciones2),
                           mean(predicciones2)+1.96*sd(predicciones2)
                           )) %>% round(3)
names(resul)<-c("Promedio","Mediana","2.5%","97.5%")
DT::datatable(resul,rownames=c("Tasa de adquirencia ajustada"),caption = "Resultados de bootstrap para modelo lineal de adquirencia con regulación y con la selección de controles por BIC", options = list(dom = 't'))
# pronóstico promedio con regulación
pred_adq_bootstrap_con_reg_con_cont_bic<-median(predicciones2)
# Gráfica de los pronósticos
fig<-plot_ly(x = ~predicciones2, type = "histogram") %>%
  layout(xaxis = list(title = "Comisión de adquirencia"),
         yaxis = list(title ="Frecuencia"),
         title = "Pronóstico BIC con boostrap (n=1000)")
fig

3.6 Regresión robusta

En este caso, pueden existir diferencias en la regresión respecto a los resultados en Stata debido a que el comando “rreg” en Stata combina dos funciones de ponderación, los pesos Huber y Biweights (https://www.stata.com/manuals13/rrreg.pdf). Por su parte, el comando “rlm” de R implementa cada ponderación por separado, y en este ejercicio se utiliza los pesos Huber (https://www.rdocumentation.org/packages/MASS/versions/7.3-58.1/topics/rlm). Sin embargo, las comisiones esperadas obtenidas para Costa Rica son similares.

# Se carga la base otra vez para analizar adquirencia.
datos <- read_excel("Base_datos_adquirencia_intercambio.xlsx")
# datos de adquirencia
datos_adq<-datos %>% dplyr::select(-Intercambio) %>% na.omit()

# Estimación de regresión robusta
## Se mantiene el modelo seleccionado por AICC en el modelo de regresión lineal.
# Estimación del modelo seleccionado
modelo_robusto_adq_con_cont_aicc<-rlm(formula = Adquirencia ~ Regulacion_intercambio + Crimen + 
                                        Cuenta + ICH + Valor_prom + Europa, data = datos_adq, 
                                      method="MM", maxit = 100)
# Pronóstico

# Sin regulación
pred_adq_con_cont_sin_reg_robusto_aicc<-predict(modelo_robusto_adq_con_cont_aicc,newdata = datos,
                                               interval = "prediction", level = 0.95,
                                               type ="response")[which(datos$Codigo_Pais=="CRI")]
# Con regulación
data_CR<-datos
data_CR[ which(datos$Codigo_Pais=="CRI"), which(names(datos)=="Regulacion_intercambio") ]<-1
pred_adq_con_cont_con_reg_robusto_aicc<-predict(modelo_robusto_adq_con_cont_aicc,newdata = data_CR,
                                               interval = "prediction", level = 0.95,
                                               type = "response")[which(data_CR$Codigo_Pais=="CRI")]

# Con ajuste
#round((pred_adq_con_cont_con_reg_robusto_aicc-(1*0.09) - (1.25*0.05) - (1.5*0.02) - (1.75*0.05))/(0.71 + 0.08),2)
# Visualización
stargazer(modelo_robusto_adq_con_cont_aicc, type = "html", 
          title = "Regresión robusta sobre la tasa de adquirencia con controles (seleccionado por AICc) y sin efectos fijos de tiempo", 
          column.labels = c("MCO"), model.names = F, 
          dep.var.labels = c("Tasa adquirencia"), dep.var.caption = "Variable dependiente")
Regresión robusta sobre la tasa de adquirencia con controles (seleccionado por AICc) y sin efectos fijos de tiempo
Variable dependiente
Tasa adquirencia
MCO
Regulacion_intercambio -0.865***
(0.091)
Crimen -0.003
(0.006)
Cuenta -0.020***
(0.003)
ICH 0.493
(0.739)
Valor_prom -0.001
(0.001)
Europa -0.634***
(0.101)
Constant 3.698***
(0.510)
Observations 87
Residual Std. Error 0.281 (df = 80)
Note: p<0.1; p<0.05; p<0.01
# Estimación del modelo seleccionado
# Se mantiene la selección del modelo lineal con el criterio BIC
modelo_robusto_adq_con_cont_bic<-rlm(formula = Adquirencia ~ Regulacion_intercambio + Cuenta +
                                   Valor_prom + Europa, data = datos_adq, method="MM", maxit = 100)
# Pronóstico
# Sin regulación
pred_adq_con_cont_sin_reg_robusto_bic<-predict(modelo_robusto_adq_con_cont_bic,newdata = datos,
                                               interval = "prediction", level = 0.95,
                                               type = "response")[which(data_CR$Codigo_Pais=="CRI")]
# Con regulación
pred_adq_con_cont_con_reg_robusto_bic<-predict(modelo_robusto_adq_con_cont_bic,newdata = data_CR,
                                               interval = "prediction", level = 0.95,
                                               type = "response")[which(data_CR$Codigo_Pais=="CRI")]
# Con ajuste
#round((pred_adq_con_cont_con_reg_robusto_bic+-(1*0.09) - (1.25*0.05) - (1.5*0.02) - (1.75*0.05))/(0.71 + 0.08),2)

# Visualización
stargazer(modelo_robusto_adq_con_cont_bic, type = "html", 
          title = "Regresión robusta sobre la tasa de adquirencia con controles (seleccionado por BIC) y sin efectos fijos de tiempo", 
          column.labels = c("MCO"), model.names = F, 
          dep.var.labels = c("Tasa adquirencia"), dep.var.caption = "Variable dependiente")
Regresión robusta sobre la tasa de adquirencia con controles (seleccionado por BIC) y sin efectos fijos de tiempo
Variable dependiente
Tasa adquirencia
MCO
Regulacion_intercambio -0.795***
(0.092)
Cuenta -0.018***
(0.002)
Valor_prom -0.001
(0.001)
Europa -0.587***
(0.100)
Constant 3.832***
(0.185)
Observations 87
Residual Std. Error 0.293 (df = 82)
Note: p<0.1; p<0.05; p<0.01
## Esitmación modelo robusto aic agregando efecto de tiempo: ----
# Se dejan las mismas variables seleccionadas con el aicc para modelo con controles. 
modelo_robusto_adq_con_cont_aicc_ef<-rlm(formula = Adquirencia ~ Regulacion_intercambio + Año_2014 + 
                                           Año_2015 + Año_2016 + Año_2017 + Año_2018 + Año_2019 +
                                           Año_2020 + Año_2021 + Año_2022 + Cuenta + ICH + Valor_prom + 
                                           Europa, data = datos_adq, method="MM", maxit = 100)
# Pronóstico

# Sin regulación
pred_adq_con_cont_sin_reg_robusto_aicc_ef<-predict(modelo_robusto_adq_con_cont_aicc_ef,newdata = datos,
                                               interval = "prediction", level = 0.95,
                                               type = "response")[which(data_CR$Codigo_Pais=="CRI")]
# Con regulación
pred_adq_con_cont_con_reg_robusto_aicc_ef<-predict(modelo_robusto_adq_con_cont_aicc_ef,newdata = data_CR,
                                               interval = "prediction", level = 0.95,
                                               type = "response")[which(data_CR$Codigo_Pais=="CRI")]
# Con ajuste
#round((pred_adq_con_cont_con_reg_robusto_aicc_ef-(1*0.09) - (1.25*0.05) - (1.5*0.02) - (1.75*0.05))/(0.71 + 0.08),2)

# Visualización
stargazer(modelo_robusto_adq_con_cont_aicc_ef, type = "html", 
          title = "Regresión robusta sobre la tasa de adquirencia con controles (seleccionado por AICc) y con efectos fijos de tiempo", 
          column.labels = c("MCO"), model.names = F, 
          dep.var.labels = c("Tasa adquirencia"), dep.var.caption = "Variable dependiente")
Regresión robusta sobre la tasa de adquirencia con controles (seleccionado por AICc) y con efectos fijos de tiempo
Variable dependiente
Tasa adquirencia
MCO
Regulacion_intercambio -0.399***
(0.119)
Año_2014 -0.455
(0.337)
Año_2015 -0.339
(0.327)
Año_2016 -0.221
(0.305)
Año_2017 -0.353
(0.279)
Año_2018 -0.487
(0.305)
Año_2019 -0.592**
(0.298)
Año_2020 -0.702**
(0.292)
Año_2021 -0.754**
(0.321)
Año_2022 1.933***
(0.494)
Cuenta -0.013***
(0.003)
ICH -1.540*
(0.861)
Valor_prom -0.005***
(0.001)
Europa -0.799***
(0.136)
Constant 4.990***
(0.503)
Observations 87
Residual Std. Error 0.279 (df = 72)
Note: p<0.1; p<0.05; p<0.01
# Selección modelo con BIC y efectos de tiempo:
## Se dejan las mismas variables seleccionadas con el aicc para modelo con controles.
# Se quitaron algunos años por problemas de colinealidad
# El Año_2022 se quitó por problemas de singularidad.
modelo_robusto_adq_con_cont_bic_ef<-rlm(formula = Adquirencia ~ Regulacion_intercambio + Año_2014 + 
                                           Año_2015 + Año_2016 + Año_2017 + Año_2018 + Año_2019 +
                                           Año_2020 + Año_2021  + Cuenta + Valor_prom + #+ Año_2022 
                                           Europa, data = datos_adq, method="MM", maxit = 100)
# Pronóstico
# Sin regulación
pred_adq_con_cont_sin_reg_robusto_bic_ef<-predict(modelo_robusto_adq_con_cont_bic_ef,newdata = datos,
                                               interval = "prediction", level = 0.95,
                                               type = "response")[which(data_CR$Codigo_Pais=="CRI")]
# Con regulación
pred_adq_con_cont_con_reg_robusto_bic_ef<-predict(modelo_robusto_adq_con_cont_bic_ef,newdata = data_CR,
                                               interval = "prediction", level = 0.95,
                                               type = "response")[which(data_CR$Codigo_Pais=="CRI")]
# Con ajuste
#round((pred_adq_con_cont_con_reg_robusto_bic_ef-(1*0.09) - (1.25*0.05) - (1.5*0.02) - (1.75*0.05))/(0.71 + 0.08),2)
# Visualización
stargazer(modelo_robusto_adq_con_cont_bic_ef, type = "html", 
          title = "Regresión robusta sobre la tasa de adquirencia con controles (seleccionado por BIC) y con efectos fijos de tiempo", 
          column.labels = c("MCO"), model.names = F, 
          dep.var.labels = c("Tasa adquirencia"), dep.var.caption = "Variable dependiente")
Regresión robusta sobre la tasa de adquirencia con controles (seleccionado por BIC) y con efectos fijos de tiempo
Variable dependiente
Tasa adquirencia
MCO
Regulacion_intercambio -0.564***
(0.117)
Año_2014 -0.382
(0.312)
Año_2015 -0.243
(0.300)
Año_2016 -0.220
(0.269)
Año_2017 -0.320
(0.247)
Año_2018 -0.384
(0.273)
Año_2019 -0.591**
(0.266)
Año_2020 -0.568**
(0.261)
Año_2021 -0.676**
(0.292)
Cuenta -0.017***
(0.003)
Valor_prom -0.004***
(0.001)
Europa -0.755***
(0.131)
Constant 4.222***
(0.289)
Observations 87
Residual Std. Error 0.330 (df = 74)
Note: p<0.1; p<0.05; p<0.01

3.7 Restringir la muestra a los países regulados

#Con solo países regulados en intercambio sin logaritmo

datos_adq_reg<-datos_adq[datos_adq$Regulacion_intercambio==1,]

#Regresión sin controles no se hace acá

#Regresión con todos los controles
modelo_adq_reg_con_cont<-lm(Adquirencia ~ Cajero_Autom + Crimen + Cuenta + Pago_digital + Debito + Credito +
                              Densidad_Pob + Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom + Europa + Asia_Este +
                              Am_lat, datos_adq_reg)

modelo_adq_reg_con_cont_corr_hc<-coeftest(modelo_adq_reg_con_cont, vcov. = vcovHC(modelo_adq_reg_con_cont, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_adq_reg_con_cont_corr_hac<-coeftest(modelo_adq_reg_con_cont, vcov. = vcovHAC(modelo_adq_reg_con_cont, adjust = TRUE, sandwich = TRUE))

stargazer(modelo_adq_reg_con_cont, modelo_adq_reg_con_cont_corr_hc, type = "html", title = "Regresión sobre la tasa de adquirencia con todos los controles, solo muestra con países regulados", 
          column.labels = c("MCO","MCO HC"), model.names = F, dep.var.labels = c("Tasa adquirencia", "Tasa adquirencia"), dep.var.caption = "Variable dependiente")
Regresión sobre la tasa de adquirencia con todos los controles, solo muestra con países regulados
Variable dependiente
Tasa adquirencia Tasa adquirencia
MCO MCO HC
(1) (2)
Cajero_Autom -0.004** -0.004
(0.001) (0.003)
Crimen 0.019** 0.019*
(0.009) (0.010)
Cuenta 0.011 0.011
(0.029) (0.029)
Pago_digital -0.023 -0.023
(0.028) (0.030)
Debito 0.013* 0.013*
(0.006) (0.007)
Credito -0.0002 -0.0002
(0.005) (0.007)
Densidad_Pob -0.002*** -0.002***
(0.0003) (0.0005)
Densidad_Neg 0.029** 0.029***
(0.012) (0.009)
PIB_pc_PPA 0.00000 0.00000
(0.00000) (0.00000)
ICH 1.667 1.667
(1.206) (1.446)
Valor_prom 0.003 0.003
(0.003) (0.002)
Europa -1.646*** -1.646***
(0.402) (0.450)
Asia_Este -1.412*** -1.412***
(0.433) (0.513)
Am_lat -0.374 -0.374
(0.421) (0.459)
Constant 1.237 1.237
(1.097) (1.037)
Observations 54
R2 0.886
Adjusted R2 0.845
Residual Std. Error 0.272 (df = 39)
F Statistic 21.699*** (df = 14; 39)
Note: p<0.1; p<0.05; p<0.01
#Pronóstico para CR
#Con regulación
data_CR<-datos
data_CR[ which(datos$Codigo_Pais=="CRI"), which(names(datos)=="Regulacion_intercambio") ]<-1
pred_adq_reg_con_cont<-predict(modelo_adq_reg_con_cont, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

#Regresión con todos los controles más efectos fijos de tiempo
modelo_adq_reg_con_cont_ef<-lm(Adquirencia ~ Cajero_Autom + Crimen + Cuenta + Pago_digital + Debito + Credito +
                              Densidad_Pob + Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom + Europa + Asia_Este +
                              Am_lat + Año_2010 + Año_2011 + Año_2012 + Año_2013 + Año_2014 + Año_2015 + Año_2016 +
                                Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 + Año_2022, datos_adq_reg)

modelo_adq_reg_con_cont_ef_corr_hc<-coeftest(modelo_adq_reg_con_cont_ef, vcov. = vcovHC(modelo_adq_reg_con_cont_ef, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_adq_reg_con_cont_ef_corr_hac<-coeftest(modelo_adq_reg_con_cont_ef, vcov. = vcovHAC(modelo_adq_reg_con_cont_ef, adjust = TRUE, sandwich = TRUE))

stargazer(modelo_adq_reg_con_cont_ef, modelo_adq_reg_con_cont_ef_corr_hc, type = "html",
          title = "Regresión sobre la tasa de adquirencia con controles y efectos fijos de tiempo, solo muestra con países regulados", 
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa adquirencia", "Tasa adquirencia"), dep.var.caption = "Variable dependiente")
Regresión sobre la tasa de adquirencia con controles y efectos fijos de tiempo, solo muestra con países regulados
Variable dependiente
Tasa adquirencia Tasa adquirencia
MCO MCO HC
(1) (2)
Cajero_Autom -0.003** -0.003
(0.002) (0.003)
Crimen 0.020** 0.020*
(0.009) (0.011)
Cuenta -0.002 -0.002
(0.032) (0.036)
Pago_digital -0.005 -0.005
(0.033) (0.041)
Debito 0.014* 0.014
(0.007) (0.008)
Credito 0.001 0.001
(0.006) (0.009)
Densidad_Pob -0.002*** -0.002**
(0.0004) (0.001)
Densidad_Neg 0.022* 0.022**
(0.013) (0.011)
PIB_pc_PPA -0.00000 -0.00000
(0.00000) (0.00000)
ICH 0.207 0.207
(1.636) (2.183)
Valor_prom 0.002 0.002
(0.003) (0.003)
Europa -1.568*** -1.568***
(0.475) (0.562)
Asia_Este -1.117* -1.117
(0.549) (0.703)
Am_lat -0.111 -0.111
(0.503) (0.582)
Año_2010
Año_2011
Año_2012
Año_2013
Año_2014 0.301 0.301***
(0.248) (0.081)
Año_2015 0.375 0.375**
(0.234) (0.156)
Año_2016 0.215 0.215
(0.220) (0.133)
Año_2017 0.390* 0.390**
(0.205) (0.181)
Año_2018 0.172 0.172
(0.210) (0.150)
Año_2019 0.211 0.211
(0.214) (0.152)
Año_2020 0.037 0.037
(0.194) (0.051)
Año_2021
Año_2022
Constant 1.601 1.601
(1.194) (1.094)
Observations 54
R2 0.905
Adjusted R2 0.842
Residual Std. Error 0.275 (df = 32)
F Statistic 14.450*** (df = 21; 32)
Note: p<0.1; p<0.05; p<0.01
#Pronóstico para CR
#Con regulación
data_CR<-datos
data_CR[ which(datos$Codigo_Pais=="CRI"), which(names(datos)=="Regulacion_intercambio") ]<-1
pred_adq_reg_con_cont_ef<-predict(modelo_adq_reg_con_cont_ef, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

#Seleccionar el modelo utilizando el AICc (corrige por tamaño de muestra pequeña)
#Se elimina la tasa de adquirencia en los datos para evitar sus NAs

modelo_adq_reg_con_cont_aicc<-lm(Adquirencia ~ Cajero_Autom + Crimen + Cuenta + Pago_digital + Debito + Credito +
                                   Densidad_Pob + Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom + Europa +
                                   Asia_Este + Am_lat, datos_adq_reg)

variables_controles<-c("Cajero_Autom", "Crimen", "Cuenta", "Pago_digital", "Debito",
                       "Credito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH", "Valor_prom", "Europa", 
                       "Asia_Este", "Am_lat")

controles<- datos_adq_reg %>% dplyr::select(c(variables_controles)) %>% as.matrix()

#Paso 1
AICC<-c()
AICC1<-aicc(modelo_adq_reg_con_cont_aicc)

for (i in 1:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq_reg))  
}

min(AICC)<AICC1

[1] TRUE

#El AICc es menor al eliminar la columna 6
controles<-controles[,-which.min(AICC)]
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 2
AICC<-c()
AICC1<-aicc(lm(Adquirencia ~ controles, datos_adq_reg))

for (i in 1:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq_reg))  
}

min(AICC)<AICC1

[1] TRUE

#El AICc es menor al eliminar la columna 8
controles<-controles[,-which.min(AICC)]
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 3
AICC<-c()
AICC1<-aicc(lm(Adquirencia ~ controles, datos_adq_reg))

for (i in 1:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq_reg))  
}

min(AICC)<AICC1

[1] TRUE

#El AICc es menor al eliminar la columna 3
controles<-controles[,-which.min(AICC)]
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 4
AICC<-c()
AICC1<-aicc(lm(Adquirencia ~ controles, datos_adq_reg))

for (i in 1:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq_reg))  
}

min(AICC)<AICC1

[1] TRUE

#El AICc es menor al eliminar la columna 11
controles<-controles[,-which.min(AICC)]
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 5
AICC<-c()
AICC1<-aicc(lm(Adquirencia ~ controles, datos_adq_reg))

for (i in 1:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq_reg))  
}

min(AICC)<AICC1

[1] TRUE

#El AICc es menor al eliminar la columna 7
controles<-controles[,-which.min(AICC)]
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 6
AICC<-c()
AICC1<-aicc(lm(Adquirencia ~ controles, datos_adq_reg))

for (i in 1:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq_reg))  
}

min(AICC)<AICC1

[1] TRUE

#El AICc es menor al eliminar la columna 7
controles<-controles[,-which.min(AICC)]
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 7
AICC<-c()
AICC1<-aicc(lm(Adquirencia ~ controles, datos_adq_reg))

for (i in 1:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq_reg))  
}

min(AICC)<AICC1

[1] TRUE

#El AICc es menor al eliminar la columna 3
controles<-controles[,-which.min(AICC)]
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 8
AICC<-c()
AICC1<-aicc(lm(Adquirencia ~ controles, datos_adq_reg))

for (i in 1:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq_reg))  
}

min(AICC)<AICC1

[1] TRUE

#El AICc es menor al eliminar la columna 3
controles<-controles[,-which.min(AICC)]
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 9
AICC<-c()
AICC1<-aicc(lm(Adquirencia ~ controles, datos_adq_reg))

for (i in 1:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq_reg))  
}

min(AICC)<AICC1

[1] FALSE

#Ya no se eliminan columnas
controles1<-controles

#variables a usar
variables_controles

[1] “Cajero_Autom” “Crimen” “Densidad_Pob” “Densidad_Neg” “Europa”
[6] “Asia_Este”

modelo_adq_reg_con_cont_aicc<-lm(Adquirencia ~ Cajero_Autom + Crimen + Densidad_Pob + Densidad_Neg + Europa +
                                   Asia_Este, datos_adq_reg)

modelo_adq_reg_con_cont_aicc_corr_hc<-coeftest(modelo_adq_reg_con_cont_aicc, vcov. = vcovHC(modelo_adq_reg_con_cont_aicc, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_adq_reg_con_cont_aicc_corr_hac<-coeftest(modelo_adq_reg_con_cont_aicc, vcov. = vcovHAC(modelo_adq_reg_con_cont_aicc, adjust = TRUE, sandwich = TRUE))

stargazer(modelo_adq_reg_con_cont_aicc, modelo_adq_reg_con_cont_aicc_corr_hc, type = "html",
          title = "Regresión sobre la tasa de adquirencia según AICc, solo países regulados en la muestra", 
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa adquirencia", "Tasa adquirencia"), dep.var.caption = "Variable dependiente")
Regresión sobre la tasa de adquirencia según AICc, solo países regulados en la muestra
Variable dependiente
Tasa adquirencia Tasa adquirencia
MCO MCO HC
(1) (2)
Cajero_Autom -0.004*** -0.004***
(0.001) (0.002)
Crimen 0.013** 0.013**
(0.006) (0.006)
Densidad_Pob -0.001*** -0.001***
(0.0002) (0.0002)
Densidad_Neg 0.027*** 0.027***
(0.008) (0.007)
Europa -1.082*** -1.082***
(0.131) (0.148)
Asia_Este -0.670*** -0.670***
(0.166) (0.143)
Constant 2.232*** 2.232***
(0.156) (0.191)
Observations 54
R2 0.865
Adjusted R2 0.847
Residual Std. Error 0.270 (df = 47)
F Statistic 50.005*** (df = 6; 47)
Note: p<0.1; p<0.05; p<0.01
#Seleccionar el modelo utilizando el BIC
modelo_adq_reg_con_cont_bic<-lm(Adquirencia ~ Cajero_Autom + Crimen + Cuenta + Pago_digital + Debito + Credito +
                                  Densidad_Pob + Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom + Europa + Asia_Este +
                                  Am_lat, datos_adq_reg)

variables_controles<-c("Cajero_Autom", "Crimen", "Cuenta", "Pago_digital", "Debito", "Credito", "Densidad_Pob",
                       "Densidad_Neg", "PIB_pc_PPA", "ICH", "Valor_prom", "Europa", "Asia_Este", "Am_lat")

controles<- datos_adq_reg %>% dplyr::select(c(variables_controles)) %>% as.matrix()

#Paso 1
BIC<-c()
BIC1<-BIC(modelo_adq_reg_con_cont_bic)

for (i in 1:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq_reg))  
}

min(BIC)<BIC1

[1] TRUE

#El BIC es menor al eliminar la columna 6
controles<-controles[,-which.min(BIC)]
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 2
BIC<-c()
BIC1<-BIC(lm(Adquirencia ~ controles, datos_adq_reg))

for (i in 1:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq_reg))  
}

min(BIC)<BIC1

[1] TRUE

#El BIC es menor al eliminar la columna 8
controles<-controles[,-which.min(BIC)]
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 3
BIC<-c()
BIC1<-BIC(lm(Adquirencia ~ controles, datos_adq_reg))

for (i in 1:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq_reg))  
}

min(BIC)<BIC1

[1] TRUE

#El BIC es menor al eliminar la columna 3
controles<-controles[,-which.min(BIC)]
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 4
BIC<-c()
BIC1<-BIC(lm(Adquirencia ~ controles, datos_adq_reg))

for (i in 1:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq_reg))  
}

min(BIC)<BIC1

[1] TRUE

#El BIC es menor al eliminar la columna 11
controles<-controles[,-which.min(BIC)]
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 5
BIC<-c()
BIC1<-BIC(lm(Adquirencia ~ controles, datos_adq_reg))

for (i in 1:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq_reg))  
}

min(BIC)<BIC1

[1] TRUE

#El BIC es menor al eliminar la columna 7
controles<-controles[,-which.min(BIC)]
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 6
BIC<-c()
BIC1<-BIC(lm(Adquirencia ~ controles, datos_adq_reg))

for (i in 1:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq_reg))  
}

min(BIC)<BIC1

[1] TRUE

#El BIC es menor al eliminar la columna 7
controles<-controles[,-which.min(BIC)]
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 7
BIC<-c()
BIC1<-BIC(lm(Adquirencia ~ controles, datos_adq_reg))

for (i in 1:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq_reg))  
}

min(BIC)<BIC1

[1] TRUE

#El BIC es menor al eliminar la columna 3
controles<-controles[,-which.min(BIC)]
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 8
BIC<-c()
BIC1<-BIC(lm(Adquirencia ~ controles, datos_adq_reg))

for (i in 1:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq_reg))  
}

min(BIC)<BIC1

[1] TRUE

#El BIC es menor al eliminar la columna 3
controles<-controles[,-which.min(BIC)]
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 9
BIC<-c()
BIC1<-BIC(lm(Adquirencia ~ controles, datos_adq_reg))

for (i in 1:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq_reg))  
}

min(BIC)<BIC1

[1] FALSE

#Ya no se eliminan columnas
controles2<-controles

#variables a usar
variables_controles

[1] “Cajero_Autom” “Crimen” “Densidad_Pob” “Densidad_Neg” “Europa”
[6] “Asia_Este”

modelo_adq_reg_con_cont_bic<-lm(Adquirencia ~ Cajero_Autom + Crimen + Densidad_Pob + Densidad_Neg + Europa + 
                                  Asia_Este, datos_adq_reg)

modelo_adq_reg_con_cont_bic_corr_hc<-coeftest(modelo_adq_reg_con_cont_bic, vcov. = vcovHC(modelo_adq_reg_con_cont_bic, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_adq_reg_con_cont_bic_corr_hac<-coeftest(modelo_adq_reg_con_cont_bic, vcov. = vcovHAC(modelo_adq_reg_con_cont_bic, adjust = TRUE, sandwich = TRUE))

stargazer(modelo_adq_reg_con_cont_bic, modelo_adq_reg_con_cont_bic_corr_hc, type = "html",
          title = "Regresión sobre la tasa de adquirencia según BIC, solo países regulados en la muestra", 
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa adquirencia", "Tasa adquirencia"), dep.var.caption = "Variable dependiente")
Regresión sobre la tasa de adquirencia según BIC, solo países regulados en la muestra
Variable dependiente
Tasa adquirencia Tasa adquirencia
MCO MCO HC
(1) (2)
Cajero_Autom -0.004*** -0.004***
(0.001) (0.002)
Crimen 0.013** 0.013**
(0.006) (0.006)
Densidad_Pob -0.001*** -0.001***
(0.0002) (0.0002)
Densidad_Neg 0.027*** 0.027***
(0.008) (0.007)
Europa -1.082*** -1.082***
(0.131) (0.148)
Asia_Este -0.670*** -0.670***
(0.166) (0.143)
Constant 2.232*** 2.232***
(0.156) (0.191)
Observations 54
R2 0.865
Adjusted R2 0.847
Residual Std. Error 0.270 (df = 47)
F Statistic 50.005*** (df = 6; 47)
Note: p<0.1; p<0.05; p<0.01
#Seleccionar el modelo utilizando el AICc (corrige por tamaño de muestra pequeña), más efectos fijos de tiempo
modelo_adq_reg_con_cont_aicc_ef<-lm(Adquirencia ~ Año_2010 + Año_2011 + Año_2012 + Año_2013 + Año_2014 + Año_2015 +
                                      Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 + Año_2022 +
                                      Cajero_Autom + Crimen + Cuenta + Pago_digital + Debito + Credito + Densidad_Pob +
                                      Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom + Europa + Asia_Este + Am_lat,
                                    datos_adq_reg)

variables_controles<-c("Año_2010", "Año_2011", "Año_2012", "Año_2013", "Año_2014", "Año_2015", "Año_2016", "Año_2017",
                       "Año_2018", "Año_2019", "Año_2020", "Año_2021", "Año_2022", "Cajero_Autom", "Crimen", "Cuenta",
                       "Pago_digital", "Debito", "Credito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH",
                       "Valor_prom", "Europa", "Asia_Este", "Am_lat")

controles<- datos_adq_reg %>% dplyr::select(c(variables_controles)) %>% as.matrix()

#Paso 1
AICC<-c()
AICC1<-aicc(modelo_adq_reg_con_cont_aicc_ef)

for (i in 1:(ncol(controles)-13)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+13)], datos_adq_reg))  
}

min(AICC)<AICC1

[1] TRUE

#El AICc es menor al eliminar la columna 16
controles<-controles[,-(which.min(AICC)+13)]
variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 2
AICC<-c()
AICC1<-aicc(lm(Adquirencia ~ controles, datos_adq_reg))

for (i in 1:(ncol(controles)-13)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+13)], datos_adq_reg))  
}

min(AICC)<AICC1

[1] TRUE

#El AICc es menor al eliminar la columna 18
controles<-controles[,-(which.min(AICC)+13)]
variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 3
AICC<-c()
AICC1<-aicc(lm(Adquirencia ~ controles, datos_adq_reg))

for (i in 1:(ncol(controles)-13)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+13)], datos_adq_reg))  
}

min(AICC)<AICC1

[1] TRUE

#El AICc es menor al eliminar la columna 21
controles<-controles[,-(which.min(AICC)+13)]
variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 4
AICC<-c()
AICC1<-aicc(lm(Adquirencia ~ controles, datos_adq_reg))

for (i in 1:(ncol(controles)-13)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+13)], datos_adq_reg))  
}

min(AICC)<AICC1

[1] TRUE

#El AICc es menor al eliminar la columna 24
controles<-controles[,-(which.min(AICC)+13)]
variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 5
AICC<-c()
AICC1<-aicc(lm(Adquirencia ~ controles, datos_adq_reg))

for (i in 1:(ncol(controles)-13)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+13)], datos_adq_reg))  
}

min(AICC)<AICC1

[1] TRUE

#El AICc es menor al eliminar la columna 20
controles<-controles[,-(which.min(AICC)+13)]
variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 6
AICC<-c()
AICC1<-aicc(lm(Adquirencia ~ controles, datos_adq_reg))

for (i in 1:(ncol(controles)-13)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+13)], datos_adq_reg))  
}

min(AICC)<AICC1

[1] TRUE

#El AICc es menor al eliminar la columna 20
controles<-controles[,-(which.min(AICC)+13)]
variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 7
AICC<-c()
AICC1<-aicc(lm(Adquirencia ~ controles, datos_adq_reg))

for (i in 1:(ncol(controles)-13)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+13)], datos_adq_reg))  
}

min(AICC)<AICC1

[1] TRUE

#El AICc es menor al eliminar la columna 16
controles<-controles[,-(which.min(AICC)+13)]
variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 8
AICC<-c()
AICC1<-aicc(lm(Adquirencia ~ controles, datos_adq_reg))

for (i in 1:(ncol(controles)-13)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+13)], datos_adq_reg))  
}

min(AICC)<AICC1

[1] FALSE

#Ya no se eliminan columnas
controles3<-controles

#variables a usar
variables_controles

[1] “Año_2010” “Año_2011” “Año_2012” “Año_2013” “Año_2014”
[6] “Año_2015” “Año_2016” “Año_2017” “Año_2018” “Año_2019”
[11] “Año_2020” “Año_2021” “Año_2022” “Cajero_Autom” “Crimen”
[16] “Debito” “Densidad_Pob” “Densidad_Neg” “Europa” “Asia_Este”

# Se omiten los los Años 2010 al 2013, 2015 y 2022 por colinealidad
modelo_adq_reg_con_cont_aicc_ef<-lm(Adquirencia ~ Año_2014 + Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 +
                                      Cajero_Autom + Crimen + Debito + Densidad_Pob + Densidad_Neg + Europa + Asia_Este, datos_adq_reg)

modelo_adq_reg_con_cont_aicc_ef_corr_hc<-coeftest(modelo_adq_reg_con_cont_aicc_ef, vcov. = vcovHC(modelo_adq_reg_con_cont_aicc_ef, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_adq_reg_con_cont_aicc_ef_corr_hac<-coeftest(modelo_adq_reg_con_cont_aicc_ef, vcov. = vcovHAC(modelo_adq_reg_con_cont_aicc_ef, adjust = TRUE, sandwich = TRUE))

stargazer(modelo_adq_reg_con_cont_aicc_ef, modelo_adq_reg_con_cont_aicc_ef_corr_hc, type = "html", 
          title = "Regresión sobre la tasa de adquirencia según AICc con efectos fijos de tiempo, solo países regulados en la muestra", 
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa adquirencia", "Tasa adquirencia"), dep.var.caption = "Variable dependiente")
Regresión sobre la tasa de adquirencia según AICc con efectos fijos de tiempo, solo países regulados en la muestra
Variable dependiente
Tasa adquirencia Tasa adquirencia
MCO MCO HC
(1) (2)
Año_2014 -0.057 -0.057
(0.241) (0.133)
Año_2016 -0.106 -0.106
(0.203) (0.146)
Año_2017 0.037 0.037
(0.171) (0.143)
Año_2018 -0.163 -0.163
(0.197) (0.161)
Año_2019 -0.155 -0.155
(0.205) (0.155)
Año_2020 -0.354 -0.354**
(0.213) (0.147)
Año_2021 -0.394* -0.394**
(0.213) (0.150)
Cajero_Autom -0.004*** -0.004**
(0.001) (0.002)
Crimen 0.021*** 0.021***
(0.007) (0.007)
Debito 0.009** 0.009*
(0.004) (0.005)
Densidad_Pob -0.001*** -0.001***
(0.0002) (0.0002)
Densidad_Neg 0.016* 0.016**
(0.009) (0.008)
Europa -1.493*** -1.493***
(0.186) (0.178)
Asia_Este -0.925*** -0.925***
(0.193) (0.193)
Constant 1.979*** 1.979***
(0.234) (0.231)
Observations 54
R2 0.899
Adjusted R2 0.862
Residual Std. Error 0.257 (df = 39)
F Statistic 24.673*** (df = 14; 39)
Note: p<0.1; p<0.05; p<0.01
#Seleccionar el modelo utilizando el BIC, más efectos fijos de tiempo
modelo_adq_reg_con_cont_bic_ef<-lm(Adquirencia ~Año_2010 + Año_2011 + Año_2012 + Año_2013 + Año_2014 + Año_2015 + 
                                     Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 + Año_2022 + 
                                     Cajero_Autom + Crimen + Cuenta + Pago_digital + Debito + Credito +
                                     Densidad_Pob + Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom + Europa + 
                                     Asia_Este + Am_lat, datos_adq_reg)

variables_controles<-c("Año_2010", "Año_2011", "Año_2012", "Año_2013", "Año_2014", "Año_2015", "Año_2016", 
                       "Año_2017", "Año_2018", "Año_2019", "Año_2020", "Año_2021", "Año_2022", "Cajero_Autom",
                       "Crimen", "Cuenta","Pago_digital", "Debito", "Credito", "Densidad_Pob", "Densidad_Neg",
                       "PIB_pc_PPA", "ICH", "Valor_prom", "Europa", "Asia_Este", "Am_lat")

controles<- datos_adq_reg %>% dplyr::select(c(variables_controles)) %>% as.matrix()

#Paso 1
BIC<-c()
BIC1<-BIC(modelo_adq_reg_con_cont_bic_ef)

for (i in 1:(ncol(controles)-13)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+13)], datos_adq_reg))  
}

min(BIC)<BIC1

[1] TRUE

#El BIC es menor al eliminar la columna 18
controles<-controles[,-(which.min(BIC)+13)]
variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 2
BIC<-c()
BIC1<-BIC(lm(Adquirencia ~ controles, datos_adq_reg))

for (i in 1:(ncol(controles)-13)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+13)], datos_adq_reg))  
}

min(BIC)<BIC1

[1] TRUE

#El BIC es menor al eliminar la columna 20
controles<-controles[,-(which.min(BIC)+13)]
variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 3
BIC<-c()
BIC1<-BIC(lm(Adquirencia ~ controles, datos_adq_reg))

for (i in 1:(ncol(controles)-13)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+13)], datos_adq_reg))  
}

min(BIC)<BIC1

[1] TRUE

#El BIC es menor al eliminar la columna 21
controles<-controles[,-(which.min(BIC)+13)]
variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 4
BIC<-c()
BIC1<-BIC(lm(Adquirencia ~ controles, datos_adq_reg))

for (i in 1:(ncol(controles)-13)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+13)], datos_adq_reg))  
}

min(BIC)<BIC1

[1] TRUE

#El BIC es menor al eliminar la columna 24
controles<-controles[,-(which.min(BIC)+13)]
variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 5
BIC<-c()
BIC1<-BIC(lm(Adquirencia ~ controles, datos_adq_reg))

for (i in 1:(ncol(controles)-13)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+13)], datos_adq_reg))  
}

min(BIC)<BIC1

[1] TRUE

#El BIC es menor al eliminar la columna 20
controles<-controles[,-(which.min(BIC)+13)]
variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 6
BIC<-c()
BIC1<-BIC(lm(Adquirencia ~ controles, datos_adq_reg))

for (i in 1:(ncol(controles)-13)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+13)], datos_adq_reg))  
}

min(BIC)<BIC1

[1] TRUE

#El BIC es menor al eliminar la columna 20
controles<-controles[,-(which.min(BIC)+13)]
variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 7
BIC<-c()
BIC1<-BIC(lm(Adquirencia ~ controles, datos_adq_reg))

for (i in 1:(ncol(controles)-13)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+13)], datos_adq_reg))  
}

min(BIC)<BIC1

[1] TRUE

#El BIC es menor al eliminar la columna 16
controles<-controles[,-(which.min(BIC)+13)]
variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 8
BIC<-c()
BIC1<-BIC(lm(Adquirencia ~ controles, datos_adq_reg))

for (i in 1:(ncol(controles)-13)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+13)], datos_adq_reg))  
}

min(BIC)<BIC1

[1] FALSE

#El BIC es menor al eliminar la columna 16
controles<-controles[,-(which.min(BIC)+13)]
variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 9
BIC<-c()
BIC1<-BIC(lm(Adquirencia ~ controles, datos_adq_reg))

for (i in 1:(ncol(controles)-13)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+13)], datos_adq_reg))  
}

min(BIC)<BIC1

[1] FALSE

#No se eliminan más columnas
controles4<-controles

#Variables a usar
variables_controles

[1] “Año_2010” “Año_2011” “Año_2012” “Año_2013” “Año_2014”
[6] “Año_2015” “Año_2016” “Año_2017” “Año_2018” “Año_2019”
[11] “Año_2020” “Año_2021” “Año_2022” “Cajero_Autom” “Crimen”
[16] “Debito” “Densidad_Pob” “Europa” “Asia_Este”

# Se omiten los años 2010 al 2013, 2015 y 2022 por colinealidad
modelo_adq_reg_con_cont_bic_ef<-lm(Adquirencia ~ Año_2014 + Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 + 
                                     Cajero_Autom + Crimen + Debito + Densidad_Pob + Densidad_Neg  + Europa + Asia_Este, datos_adq_reg)

modelo_adq_reg_con_cont_bic_ef_corr_hc<-coeftest(modelo_adq_reg_con_cont_bic_ef, vcov. = vcovHC(modelo_adq_reg_con_cont_bic_ef, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_adq_reg_con_cont_bic_ef_corr_hac<-coeftest(modelo_adq_reg_con_cont_bic_ef, vcov. = vcovHAC(modelo_adq_reg_con_cont_bic_ef, adjust = TRUE, sandwich = TRUE))

stargazer(modelo_adq_reg_con_cont_bic_ef, modelo_adq_reg_con_cont_bic_ef_corr_hc, type = "html", 
          title = "Regresión sobre la tasa de adquirencia según BIC con efectos fijos de tiempo, solo países regulados en la muestra", 
          column.labels = c("MCO","MCO HC"), model.names = F,
          dep.var.labels = c("Tasa adquirencia", "Tasa adquirencia"), dep.var.caption = "Variable dependiente")
Regresión sobre la tasa de adquirencia según BIC con efectos fijos de tiempo, solo países regulados en la muestra
Variable dependiente
Tasa adquirencia Tasa adquirencia
MCO MCO HC
(1) (2)
Año_2014 -0.057 -0.057
(0.241) (0.133)
Año_2016 -0.106 -0.106
(0.203) (0.146)
Año_2017 0.037 0.037
(0.171) (0.143)
Año_2018 -0.163 -0.163
(0.197) (0.161)
Año_2019 -0.155 -0.155
(0.205) (0.155)
Año_2020 -0.354 -0.354**
(0.213) (0.147)
Año_2021 -0.394* -0.394**
(0.213) (0.150)
Cajero_Autom -0.004*** -0.004**
(0.001) (0.002)
Crimen 0.021*** 0.021***
(0.007) (0.007)
Debito 0.009** 0.009*
(0.004) (0.005)
Densidad_Pob -0.001*** -0.001***
(0.0002) (0.0002)
Densidad_Neg 0.016* 0.016**
(0.009) (0.008)
Europa -1.493*** -1.493***
(0.186) (0.178)
Asia_Este -0.925*** -0.925***
(0.193) (0.193)
Constant 1.979*** 1.979***
(0.234) (0.231)
Observations 54
R2 0.899
Adjusted R2 0.862
Residual Std. Error 0.257 (df = 39)
F Statistic 24.673*** (df = 14; 39)
Note: p<0.1; p<0.05; p<0.01

3.8 Predicción de las comisiones de adquirencia

#Pronósticos de la tasa de Adquirencia

#Pronósticos sin logaritmo toda la muestra

#Predicción con dicotómica sin regulación
pred1_adq_sin_reg <-predict(modelo_adq_con_cont_aicc, newdata = datos, 
                                      interval = "prediction", level = 0.95, 
                                      type = "response")[which(datos$Codigo_Pais=="CRI")]

pred2_adq_sin_reg<-predict(modelo_adq_con_cont_bic, newdata = datos, 
                                      interval = "prediction", level = 0.95, 
                                      type = "response")[which(datos$Codigo_Pais=="CRI")]

pred3_adq_sin_reg<-predict(modelo_adq_con_cont_aicc_ef, newdata = datos, 
                                      interval = "prediction", level = 0.95, 
                                      type = "response")[which(datos$Codigo_Pais=="CRI")]

pred4_adq_sin_reg<-predict(modelo_adq_con_cont_bic_ef, newdata = datos, 
                                      interval = "prediction", level = 0.95, 
                                      type = "response")[which(datos$Codigo_Pais=="CRI")]

# pronóstico promedio sin reglación sin ajustar
pred_adq_sin_reg<-mean(c(as.numeric(pred1_adq_sin_reg), 
                         as.numeric(pred2_adq_sin_reg), 
                         as.numeric(pred3_adq_sin_reg), 
                         as.numeric(pred4_adq_sin_reg)))

# pronóstico promedio sin reglación ajustado
pred_adq_sin_reg_ajus<-round((pred_adq_sin_reg-(1*0.09) - (1.25*0.05) - (1.5*0.02) - (1.75*0.05))/(0.71 + 0.08),2)

#Predicción con dicotómica con regulación
# Se usa data_CR porque se le asignó a CR como regulado
pred1_adq_con_reg<-predict(modelo_adq_con_cont_aicc, newdata = data_CR, 
                                      interval = "prediction", level = 0.95, 
                                      type = "response")[which(data_CR$Codigo_Pais=="CRI")]

pred2_adq_con_reg<-predict(modelo_adq_con_cont_bic, newdata = data_CR, 
                                      interval = "prediction", level = 0.95, 
                                      type = "response")[which(data_CR$Codigo_Pais=="CRI")]

pred3_adq_con_reg<-predict(modelo_adq_con_cont_aicc_ef, newdata = data_CR, 
                                      interval = "prediction", level = 0.95, 
                                      type = "response")[which(data_CR$Codigo_Pais=="CRI")]

pred4_adq_con_reg<-predict(modelo_adq_con_cont_bic_ef, newdata = data_CR, 
                                      interval = "prediction", level = 0.95, 
                                      type = "response")[which(data_CR$Codigo_Pais=="CRI")]

pred_adq_con_reg<-mean(c(as.numeric(pred1_adq_con_reg), 
                         as.numeric(pred2_adq_con_reg), 
                         as.numeric(pred3_adq_con_reg),
                         as.numeric(pred4_adq_con_reg)))

# Con ajuste

pred_adq_con_reg_ajus<-round((pred_adq_con_reg-(1*0.09) - (1.25*0.05) - (1.5*0.02) - (1.75*0.05))/(0.71 + 0.08),2)

##########################################
#Pronósticos con logaritmo toda la muestra

#Predicción con dicotómica sin regulación
pred1_log_adq_sin_reg<-exp(predict(modelo_log_adq_con_cont_aicc, newdata = datos, 
                                      interval = "prediction", level = 0.95, 
                                      type = "response")[which(datos$Codigo_Pais=="CRI")])

pred2_log_adq_sin_reg<-exp(predict(modelo_log_adq_con_cont_bic, newdata = datos, 
                                      interval = "prediction", level = 0.95, 
                                      type = "response")[which(datos$Codigo_Pais=="CRI")])

pred3_log_adq_sin_reg<-exp(predict(modelo_log_adq_con_cont_aicc_ef, newdata = datos, 
                                      interval = "prediction", level = 0.95, 
                                      type = "response")[which(datos$Codigo_Pais=="CRI")])
pred4_log_adq_sin_reg<-exp(predict(modelo_log_adq_con_cont_bic_ef, newdata = datos, 
                                      interval = "prediction", level = 0.95, 
                                      type = "response")[which(datos$Codigo_Pais=="CRI")])

pred_log_adq_sin_reg<-mean(c(as.numeric(pred1_log_adq_sin_reg), as.numeric(pred2_log_adq_sin_reg), as.numeric(pred3_log_adq_sin_reg), as.numeric(pred4_log_adq_sin_reg)))


pred_adq_con_reg<-mean(c(as.numeric(pred1_adq_con_reg), as.numeric(pred2_adq_con_reg), as.numeric(pred3_adq_con_reg), as.numeric(pred4_adq_con_reg)))

# Con ajuste
pred_log_adq_sin_reg_ajus<-(pred_log_adq_sin_reg-(1*0.09) - (1.25*0.05) - (1.5*0.02) - (1.75*0.05))/(0.71 + 0.08)
pred_adq_con_reg_ajus<-(pred_adq_con_reg+-(1*0.09) - (1.25*0.05) - (1.5*0.02) - (1.75*0.05))/(0.71 + 0.08)

#Predicción con dicotómica con regulación
pred1_log_adq_con_reg<- exp(predict(modelo_log_adq_con_cont_aicc, newdata = data_CR, 
                                      interval = "prediction", level = 0.95, 
                                      type = "response")[which(data_CR$Codigo_Pais=="CRI")])

pred2_log_adq_con_reg<-exp(predict(modelo_log_adq_con_cont_bic, newdata = data_CR, 
                                      interval = "prediction", level = 0.95, 
                                      type = "response")[which(data_CR$Codigo_Pais=="CRI")])

pred3_log_adq_con_reg<-exp(predict(modelo_log_adq_con_cont_aicc_ef, newdata = data_CR, 
                                      interval = "prediction", level = 0.95, 
                                      type = "response")[which(data_CR$Codigo_Pais=="CRI")])

pred4_log_adq_con_reg<-exp(predict(modelo_log_adq_con_cont_bic_ef, newdata = data_CR,
                                   interval = "prediction", level = 0.95,
                                   type = "response")[which(data_CR$Codigo_Pais=="CRI")])
 
pred_log_adq_con_reg<-mean(c(as.numeric(pred1_log_adq_con_reg), as.numeric(pred2_log_adq_con_reg), as.numeric(pred3_log_adq_con_reg), as.numeric(pred4_log_adq_con_reg)))

# Con ajuste
pred_log_adq_con_reg_ajus<-round((pred_log_adq_con_reg-(1*0.09) - (1.25*0.05) - (1.5*0.02) - (1.75*0.05))/(0.71 + 0.08),2)

##########################################
#Pronósticos sin logaritmo solo países regulados en la muestra
pred1_adq_reg<-predict(modelo_adq_reg_con_cont_aicc, newdata = data_CR,
                                   interval = "prediction", level = 0.95,
                                   type = "response")[which(data_CR$Codigo_Pais=="CRI")]
pred2_adq_reg<-predict(modelo_adq_reg_con_cont_bic, newdata = data_CR,
                                   interval = "prediction", level = 0.95,
                                   type = "response")[which(data_CR$Codigo_Pais=="CRI")]
pred3_adq_reg<-predict(modelo_adq_reg_con_cont_aicc_ef, newdata = data_CR,
                                   interval = "prediction", level = 0.95,
                                   type = "response")[which(data_CR$Codigo_Pais=="CRI")]
  
pred4_adq_reg<-predict(modelo_adq_reg_con_cont_bic_ef, newdata = data_CR,
                                   interval = "prediction", level = 0.95,
                                   type = "response")[which(data_CR$Codigo_Pais=="CRI")]

pred_adq_reg<-mean(c(as.numeric(pred1_adq_reg), 
                     as.numeric(pred2_adq_reg), 
                     as.numeric(pred3_adq_reg), 
                     as.numeric(pred4_adq_reg)))
# CON AJUSTE
pred_adq_reg_ajus<-round((pred_adq_reg-(1*0.09) - (1.25*0.05) - (1.5*0.02) - (1.75*0.05))/(0.71 + 0.08),2)

####################################
#Tabla pronósticos -----

pronosticos_adq<-as.data.frame(round(
                               cbind(c(pred_adq_sin_cont_sin_reg, 
                                       #pred_adq_con_cont_sin_reg, 
                                       #pred_adq_con_cont_ef_sin_reg, 
                                       pred1_adq_sin_reg, 
                                       pred2_adq_sin_reg, 
                                       pred3_adq_sin_reg, 
                                       pred4_adq_sin_reg, 
                                       pred_adq_sin_reg), 
                                     c( pred_adq_sin_cont_con_reg, 
                                        #pred_adq_con_cont_con_reg, 
                                        #pred_adq_con_cont_ef_con_reg, 
                                        pred1_adq_con_reg, 
                                        pred2_adq_con_reg, 
                                        pred3_adq_con_reg, 
                                        pred4_adq_con_reg, 
                                        pred_adq_con_reg) 
                                     ),2))

rownames(pronosticos_adq)<-c("Estimación principal - Modelo sin controles", 
                             "Estimación principal - Modelo AICc sin efectos fijos de tiempo", 
                             "Estimación principal - Modelo BIC sin efectos fijos de tiempo", 
                             "Estimación principal - Modelo AICc con efectos fijos de tiempo", 
                             "Estimación principal - Modelo BIC con efectos fijos de tiempo", 
                             "Estimación principal - Promedio modelos AICc y BIC")

names(pronosticos_adq)<-c("Escenario sin regulación","Escenario con regulación")
# Visualización
DT::datatable(pronosticos_adq, caption = "Comisión de adquirencia esperada para Costa Rica de acuerdo con la estimación principal") 
#Tabla pronósticos alternativos con log
pronosticos_adq_alt_log<-as.data.frame(round(
                                        cbind(
                                             c(#pred_log_adq_sin_cont_sin_reg, 
                                               #pred_log_adq_con_cont_sin_reg, 
                                               #pred_log_adq_con_cont_ef_sin_reg, 
                                               pred1_log_adq_sin_reg, 
                                               pred2_log_adq_sin_reg, 
                                               pred3_log_adq_sin_reg, 
                                               pred4_log_adq_sin_reg, 
                                               pred_log_adq_sin_reg), 
                                             c( #pred_log_adq_sin_cont_con_reg, 
                                                #pred_log_adq_con_cont_con_reg, 
                                                #pred_log_adq_con_cont_ef_con_reg, 
                                                pred1_log_adq_con_reg, 
                                                pred2_log_adq_con_reg, 
                                                pred3_log_adq_con_reg, 
                                                pred4_log_adq_con_reg, 
                                                pred_log_adq_con_reg) ),2))

rownames(pronosticos_adq_alt_log)<-c(
                                     "Modelo con transformación logarítmica - Modelo AICc sin efectos fijos de tiempo", 
                                     "Modelo con transformación logarítmica - Modelo BIC sin efectos fijos de tiempo", 
                                     "Modelo con transformación logarítmica - Modelo AICc con efectos fijos de tiempo", 
                                     "Modelo con transformación logarítmica - Modelo BIC con efectos fijos de tiempo", 
                                     "Modelo con transformación logarítmica - Promedio modelos AICc y BIC")

names(pronosticos_adq_alt_log)<-c("Escenario sin regulación","Escenario con regulación")
# Visualización
DT::datatable(pronosticos_adq_alt_log, caption = "Comisión de adquirencia esperada para Costa Rica de acuerdo con el modelo con transformación logarítmica")
#Tabla pronósticos alternativos solo muestra regulados ----

pronosticos_adq_alt_reg<-as.data.frame(cbind(round(
                                              c( #pred_adq_reg_con_cont, 
                                                 #pred_adq_reg_con_cont_ef, 
                                                 pred1_adq_reg, 
                                                 pred2_adq_reg, 
                                                 pred3_adq_reg, 
                                                 pred4_adq_reg, 
                                                 pred_adq_reg),3) 
                                              ) )
rownames(pronosticos_adq_alt_reg)<-c(
                                    #"Modelo con controles sin efectos fijos de tiempo", 
                                     #"Modelo con controles con efectos fijos de tiempo", 
                                     "Restringuido a países con regulación - Modelo AICc sin efectos fijos de tiempo", 
                                     "Restringuido a países con regulación - Modelo BIC sin efectos fijos de tiempo", 
                                     "Restringuido a países con regulación - Modelo AICc con efectos fijos de tiempo", 
                                     "Restringuido a países con regulación - Modelo BIC con efectos fijos de tiempo", 
                                     "Restringuido a países con regulación - Promedio modelos AICc y BIC")

names(pronosticos_adq_alt_reg)<-c("Pronóstico con solo muestra de países regulados")
# Visualización
DT::datatable(pronosticos_adq_alt_reg, caption = "Comisión de adquirencia esperada para Costa Rica al restringir a países con regulación")

3.9 Regresión sin variables uso de tarjetas

A continuación se muestran los modelos para tasa de intercambio sin considerar las variables control relacionadas con tarjetas. Siguiendo la metodología anterior, se procede a seleccionar las variables con los criterios de información AICc y BIC.

  • Selección de variables mediante AICc sin efectos fijos de tiempo:
# Selección con AICc
variables_controles<-c("Regulacion_intercambio","Crimen", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH", "Europa", "Asia_Este", "Am_lat")
datos_adq<-datos %>% dplyr::select(c("Adquirencia",variables_controles)) %>% na.omit()
# Estimación modelo inicial
modelo_adq_sin_tarj_aicc<-lm(Adquirencia ~ Regulacion_intercambio + Crimen + Densidad_Pob + 
                               Densidad_Neg + PIB_pc_PPA + ICH + Europa + Asia_Este + 
                               Am_lat, data =  datos_adq)
controles<- datos_adq %>% dplyr::select(c(variables_controles)) %>% as.matrix()
#Paso 1
AICC<-c()
AICC[1]<-aicc(modelo_adq_sin_tarj_aicc)

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}
min(AICC)<AICC[1]

[1] TRUE

#El criterio excluye la siguiente variable
controles<-controles[,-which.min(AICC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Crimen’”

variables_controles<-variables_controles[-which.min(AICC)]

#Paso 2
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}
min(AICC)<AICC[1]

[1] TRUE

#El criterio excluye la siguiente variable
controles<-controles[,-which.min(AICC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Densidad_Pob’”

variables_controles<-variables_controles[-which.min(AICC)]
#Paso 3
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}
min(AICC)<AICC[1]

[1] TRUE

#El criterio excluye la siguiente variable
controles<-controles[,-which.min(AICC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Asia_Este’”

variables_controles<-variables_controles[-which.min(AICC)]
#Paso 4
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}
min(AICC)<AICC[1]

[1] TRUE

#El criterio excluye la siguiente variable
controles<-controles[,-which.min(AICC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Densidad_Neg’”

variables_controles<-variables_controles[-which.min(AICC)]

#Paso 5
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}
min(AICC)<AICC[1]

[1] TRUE

#El criterio excluye la siguiente variable
controles<-controles[,-which.min(AICC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))

[1] “Se elimina por este criterio la variable: ‘PIB_pc_PPA’”

variables_controles<-variables_controles[-which.min(AICC)]
#Paso 6
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}
min(AICC)<AICC[1]

[1] FALSE

# El AICC ya no es menor, entonces no se eliminan columnas
controles1<-controles
print(paste0("El criterio deja las siguientes variables: ","'",variables_controles,"' "))

[1] “El criterio deja las siguientes variables: ‘Regulacion_intercambio’” [2] “El criterio deja las siguientes variables: ‘ICH’”
[3] “El criterio deja las siguientes variables: ‘Europa’”
[4] “El criterio deja las siguientes variables: ‘Am_lat’”

# Estimación
modelo_adq_sin_tarj_aicc<-lm(Adquirencia ~ Regulacion_intercambio + ICH + Europa + Am_lat, data =  datos_adq)
#Pronóstico para CR
#Con solo una variable:
data_CR<-datos
data_CR[ which(datos$Codigo_Pais=="CRI"), which(names(datos)=="Regulacion_intercambio") ]<-1
#Sin regulación
pred_adq_sin_tarj_aicc_sin_reg<-predict(modelo_adq_sin_tarj_aicc, newdata = datos, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
#Con regulación
pred_adq_sin_tarj_aicc_con_reg<-predict(modelo_adq_sin_tarj_aicc, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

# Visualización
#summary(modelo_int_sin_tarj_aicc)
stargazer(modelo_adq_sin_tarj_aicc, type = "html", 
          title = "Regresión sobre la tasa de adquirencia sin variables relacionadas a tarjetas y selección con AICc", 
          column.labels = c("MCO"), model.names = F, 
          dep.var.labels = c("Tasa adquirencia"), 
          dep.var.caption = "Variable dependiente")
Regresión sobre la tasa de adquirencia sin variables relacionadas a tarjetas y selección con AICc
Variable dependiente
Tasa adquirencia
MCO
Regulacion_intercambio -0.486***
(0.140)
ICH -2.754***
(0.827)
Europa -0.404**
(0.156)
Am_lat 0.382**
(0.166)
Constant 3.776***
(0.558)
Observations 97
R2 0.658
Adjusted R2 0.643
Residual Std. Error 0.539 (df = 92)
F Statistic 44.283*** (df = 4; 92)
Note: p<0.1; p<0.05; p<0.01
  • Selección de variables mediante BIC sin efectos fijos de tiempo:
# Selección con BIC
variables_controles<-c("Regulacion_intercambio","Crimen", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH", "Europa", "Asia_Este", "Am_lat")
datos_adq<-datos %>% dplyr::select(c("Adquirencia",variables_controles)) %>% na.omit()
# Estimación modelo inicial
modelo_adq_sin_tarj_bic<-lm(Adquirencia ~ Regulacion_intercambio + Crimen + Densidad_Pob + 
                               Densidad_Neg + PIB_pc_PPA + ICH + Europa + Asia_Este + 
                               Am_lat, data =  datos_adq)
controles<- datos_adq %>% dplyr::select(c(variables_controles)) %>% as.matrix()
#Paso 1
BIC<-c()
BIC[1]<-BIC(modelo_adq_sin_tarj_bic)

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}
min(BIC)<BIC[1]

[1] TRUE

#El criterio excluye la siguiente variable
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Crimen’”

variables_controles<-variables_controles[-which.min(BIC)]

#Paso 2
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}
min(BIC)<BIC[1]

[1] TRUE

#El criterio excluye la siguiente variable
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Densidad_Pob’”

variables_controles<-variables_controles[-which.min(BIC)]
#Paso 3
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}
min(BIC)<BIC[1]

[1] TRUE

#El criterio excluye la siguiente variable
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Asia_Este’”

variables_controles<-variables_controles[-which.min(BIC)]
#Paso 4
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}
min(BIC)<BIC[1]

[1] TRUE

#El criterio excluye la siguiente variable
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))

[1] “Se elimina por este criterio la variable: ‘Densidad_Neg’”

variables_controles<-variables_controles[-which.min(BIC)]

#Paso 5
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}
min(BIC)<BIC[1]

[1] TRUE

#El criterio excluye la siguiente variable
controles<-controles[,-which.min(BIC)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))

[1] “Se elimina por este criterio la variable: ‘PIB_pc_PPA’”

variables_controles<-variables_controles[-which.min(BIC)]
#Paso 6
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}
min(BIC)<BIC[1]

[1] FALSE

# El BIC ya no es menor, entonces no se eliminan columnas
controles1<-controles
print(paste0("El criterio deja las siguientes variables: ","'",variables_controles,"' "))

[1] “El criterio deja las siguientes variables: ‘Regulacion_intercambio’” [2] “El criterio deja las siguientes variables: ‘ICH’”
[3] “El criterio deja las siguientes variables: ‘Europa’”
[4] “El criterio deja las siguientes variables: ‘Am_lat’”

# Estimación
modelo_adq_sin_tarj_bic<-lm(Adquirencia ~ Regulacion_intercambio + ICH + Europa + Am_lat, data =  datos_adq)
#Pronóstico para CR
#Con solo una variable:
data_CR<-datos
data_CR[ which(datos$Codigo_Pais=="CRI"), which(names(datos)=="Regulacion_intercambio") ]<-1
#Sin regulación
pred_adq_sin_tarj_bic_sin_reg<-predict(modelo_adq_sin_tarj_bic, newdata = datos, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
#Con regulación
pred_adq_sin_tarj_bic_con_reg<-predict(modelo_adq_sin_tarj_bic, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

# Visualización
#summary(modelo_int_sin_tarj_bic)
stargazer(modelo_adq_sin_tarj_bic, type = "html", 
          title = "Regresión sobre la tasa de adquirencia sin variables relacionadas a tarjetas y selección con bic", 
          column.labels = c("MCO"), model.names = F, 
          dep.var.labels = c("Tasa adquirencia"), 
          dep.var.caption = "Variable dependiente")
Regresión sobre la tasa de adquirencia sin variables relacionadas a tarjetas y selección con bic
Variable dependiente
Tasa adquirencia
MCO
Regulacion_intercambio -0.486***
(0.140)
ICH -2.754***
(0.827)
Europa -0.404**
(0.156)
Am_lat 0.382**
(0.166)
Constant 3.776***
(0.558)
Observations 97
R2 0.658
Adjusted R2 0.643
Residual Std. Error 0.539 (df = 92)
F Statistic 44.283*** (df = 4; 92)
Note: p<0.1; p<0.05; p<0.01

A continuación se presentan los resultados de usar los criterios de información AICc y BIC incluyendo efectos fijos en los modelos:

  • Selección de variables mediante AICc con efectos fijos de tiempo:
## Modelo con efectos fijos sin variables de uso tarjetas

# Selección con AICc
variables_controles<-c("Regulacion_intercambio","Año_2010", "Año_2011", "Año_2012",
                       "Año_2013","Año_2014", "Año_2015", "Año_2016", "Año_2017", 
                       "Año_2018", "Año_2019", "Año_2020","Año_2021", "Año_2022",
                       "Crimen", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", 
                       "ICH", "Europa", "Asia_Este", "Am_lat")

datos_adq<-datos %>% dplyr::select(c("Adquirencia",variables_controles)) %>% na.omit()
# Estimación modelo inicial
modelo_adq_sin_tarj_aicc_ef<-lm(Adquirencia ~ Regulacion_intercambio  + Año_2010 + 
                               Año_2011 + Año_2012 + Año_2013 + Año_2014 + 
                               Año_2015 + Año_2016 + Año_2017 + Año_2018 +
                               Año_2019 + Año_2020 + Año_2021 + Año_2022 + 
                               Crimen + Densidad_Pob + Densidad_Neg + 
                               PIB_pc_PPA + ICH + Europa + Asia_Este + 
                               Am_lat, data =   datos_adq)

controles<-  datos_adq %>% dplyr::select(c(variables_controles)) %>% as.matrix()


#Paso 1
AICC<-c()
AICC[1]<-aicc(modelo_adq_sin_tarj_aicc_ef)

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+13)],  datos_adq))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+13],"' "))

[1] “Se elimina por este criterio la variable: ‘Asia_Este’”

variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 2
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles,  datos_adq))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+13)],  datos_adq))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la columna 15
controles<-controles[,-(which.min(AICC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+13],"' "))

[1] “Se elimina por este criterio la variable: ‘Crimen’”

variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 3
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles,  datos_adq))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+13)],  datos_adq))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la columna 15
controles<-controles[,-(which.min(AICC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+13],"' "))

[1] “Se elimina por este criterio la variable: ‘Densidad_Pob’”

variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 4
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles,  datos_adq))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+13)],  datos_adq))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la columna 15
controles<-controles[,-(which.min(AICC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+13],"' "))

[1] “Se elimina por este criterio la variable: ‘Densidad_Neg’”

variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 5
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles,  datos_adq))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+13)],  datos_adq))  
}

min(AICC)<AICC[1]

[1] TRUE

#El AICc es menor al eliminar la columna 15
controles<-controles[,-(which.min(AICC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+13],"' "))

[1] “Se elimina por este criterio la variable: ‘PIB_pc_PPA’”

variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 6
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles,  datos_adq))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+13)],  datos_adq))  
}

min(AICC)<AICC[1]

[1] FALSE

# El AICc ya no es menor, entonces no se eliminan columnas
controles1<-controles
print(paste0("El criterio deja las siguientes variables: ","'",variables_controles,"' "))

[1] “El criterio deja las siguientes variables: ‘Regulacion_intercambio’” [2] “El criterio deja las siguientes variables: ‘Año_2010’”
[3] “El criterio deja las siguientes variables: ‘Año_2011’”
[4] “El criterio deja las siguientes variables: ‘Año_2012’”
[5] “El criterio deja las siguientes variables: ‘Año_2013’”
[6] “El criterio deja las siguientes variables: ‘Año_2014’”
[7] “El criterio deja las siguientes variables: ‘Año_2015’”
[8] “El criterio deja las siguientes variables: ‘Año_2016’”
[9] “El criterio deja las siguientes variables: ‘Año_2017’”
[10] “El criterio deja las siguientes variables: ‘Año_2018’”
[11] “El criterio deja las siguientes variables: ‘Año_2019’”
[12] “El criterio deja las siguientes variables: ‘Año_2020’”
[13] “El criterio deja las siguientes variables: ‘Año_2021’”
[14] “El criterio deja las siguientes variables: ‘Año_2022’”
[15] “El criterio deja las siguientes variables: ‘ICH’”
[16] “El criterio deja las siguientes variables: ‘Europa’”
[17] “El criterio deja las siguientes variables: ‘Am_lat’”

# Estimación del modelo:
modelo_adq_sin_tarj_aicc_ef<-lm(Adquirencia ~ Regulacion_intercambio  + Año_2011 + Año_2012 +
                                  Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + 
                                  Año_2019 + Año_2020 + Año_2021 + Año_2022 + ICH + Europa + Am_lat, 
                                data = datos_adq)
#Pronóstico para CR
#Con solo una variable:
data_CR<-datos
data_CR[ which(datos$Codigo_Pais=="CRI"), which(names(datos)=="Regulacion_intercambio") ]<-1
#Sin regulación
pred_adq_sin_tarj_aicc_ef_sin_reg<-predict(modelo_adq_sin_tarj_aicc_ef, newdata = datos, interval = "prediction",
                                        level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

#Con regulación
pred_adq_sin_tarj_aicc_ef_con_reg<-predict(modelo_adq_sin_tarj_aicc_ef, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

# Visualización
stargazer(modelo_adq_sin_tarj_aicc_ef, type = "html", 
          title = "Regresión sobre la tasa de adquirencia según AICc con efectos fijos de tiempo", 
          column.labels = c("MCO"), model.names = F, 
          dep.var.labels = c("Tasa Adquirencia"), 
          dep.var.caption = "Variable dependiente")
Regresión sobre la tasa de adquirencia según AICc con efectos fijos de tiempo
Variable dependiente
Tasa Adquirencia
MCO
Regulacion_intercambio -0.420***
(0.138)
Año_2011 -0.120
(0.696)
Año_2012 -0.140
(0.696)
Año_2013 -0.171
(0.556)
Año_2014 -0.565
(0.537)
Año_2015 -0.399
(0.532)
Año_2016 -0.103
(0.526)
Año_2017 -0.220
(0.519)
Año_2018 -0.164
(0.525)
Año_2019 -0.234
(0.522)
Año_2020 -0.401
(0.517)
Año_2021 -0.570
(0.540)
Año_2022 2.077***
(0.696)
ICH -2.828***
(0.807)
Europa -0.441***
(0.159)
Am_lat 0.357**
(0.155)
Constant 4.060***
(0.710)
Observations 97
R2 0.752
Adjusted R2 0.703
Residual Std. Error 0.492 (df = 80)
F Statistic 15.179*** (df = 16; 80)
Note: p<0.1; p<0.05; p<0.01
  • Selección de variables mediante BIC con efectos fijos de tiempo:
# Selección con BIC
variables_controles<-c("Regulacion_intercambio","Año_2010", "Año_2011", "Año_2012",
                       "Año_2013","Año_2014", "Año_2015", "Año_2016", "Año_2017", 
                       "Año_2018", "Año_2019", "Año_2020","Año_2021", "Año_2022",
                       "Crimen", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", 
                       "ICH", "Europa", "Asia_Este", "Am_lat")

datos_adq<-datos %>% dplyr::select(c("Adquirencia",variables_controles)) %>% na.omit()
# Estimación modelo inicial
modelo_adq_sin_tarj_bic_ef<-lm(Adquirencia ~ Regulacion_intercambio  + Año_2010 + 
                               Año_2011 + Año_2012 + Año_2013 + Año_2014 + 
                               Año_2015 + Año_2016 + Año_2017 + Año_2018 +
                               Año_2019 + Año_2020 + Año_2021 + Año_2022 + 
                               Crimen + Densidad_Pob + Densidad_Neg + 
                               PIB_pc_PPA + ICH + Europa + Asia_Este + 
                               Am_lat, data =   datos_adq)

controles<-  datos_adq %>% dplyr::select(c(variables_controles)) %>% as.matrix()


#Paso 1
BIC<-c()
BIC[1]<-BIC(modelo_adq_sin_tarj_bic_ef)

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+13)],  datos_adq))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+13],"' "))

[1] “Se elimina por este criterio la variable: ‘Asia_Este’”

variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 2
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles,  datos_adq))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+13)],  datos_adq))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la columna 15
controles<-controles[,-(which.min(BIC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+13],"' "))

[1] “Se elimina por este criterio la variable: ‘Crimen’”

variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 3
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles,  datos_adq))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+13)],  datos_adq))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la columna 15
controles<-controles[,-(which.min(BIC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+13],"' "))

[1] “Se elimina por este criterio la variable: ‘Densidad_Pob’”

variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 4
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles,  datos_adq))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+13)],  datos_adq))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la columna 15
controles<-controles[,-(which.min(BIC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+13],"' "))

[1] “Se elimina por este criterio la variable: ‘Densidad_Neg’”

variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 5
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles,  datos_adq))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+13)],  datos_adq))  
}

min(BIC)<BIC[1]

[1] TRUE

#El BIC es menor al eliminar la columna 15
controles<-controles[,-(which.min(BIC)+13)]
print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+13],"' "))

[1] “Se elimina por este criterio la variable: ‘PIB_pc_PPA’”

variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 6
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles,  datos_adq))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+13)],  datos_adq))  
}

min(BIC)<BIC[1]

[1] FALSE

# El BIC ya no es menor, entonces no se eliminan columnas
controles1<-controles
print(paste0("El criterio deja las siguientes variables: ","'",variables_controles,"' "))

[1] “El criterio deja las siguientes variables: ‘Regulacion_intercambio’” [2] “El criterio deja las siguientes variables: ‘Año_2010’”
[3] “El criterio deja las siguientes variables: ‘Año_2011’”
[4] “El criterio deja las siguientes variables: ‘Año_2012’”
[5] “El criterio deja las siguientes variables: ‘Año_2013’”
[6] “El criterio deja las siguientes variables: ‘Año_2014’”
[7] “El criterio deja las siguientes variables: ‘Año_2015’”
[8] “El criterio deja las siguientes variables: ‘Año_2016’”
[9] “El criterio deja las siguientes variables: ‘Año_2017’”
[10] “El criterio deja las siguientes variables: ‘Año_2018’”
[11] “El criterio deja las siguientes variables: ‘Año_2019’”
[12] “El criterio deja las siguientes variables: ‘Año_2020’”
[13] “El criterio deja las siguientes variables: ‘Año_2021’”
[14] “El criterio deja las siguientes variables: ‘Año_2022’”
[15] “El criterio deja las siguientes variables: ‘ICH’”
[16] “El criterio deja las siguientes variables: ‘Europa’”
[17] “El criterio deja las siguientes variables: ‘Am_lat’”

# Estimación del modelo:
modelo_adq_sin_tarj_bic_ef<-lm(Adquirencia ~ Regulacion_intercambio  + Año_2011 + Año_2012 +
                                  Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + 
                                  Año_2019 + Año_2020 + Año_2021 + Año_2022 + ICH + Europa + Am_lat, 
                                data =   datos_adq)
#Pronóstico para CR
#Con solo una variable:
data_CR<-datos
data_CR[ which(datos$Codigo_Pais=="CRI"), which(names(datos)=="Regulacion_intercambio") ]<-1
#Sin regulación
pred_adq_sin_tarj_bic_ef_sin_reg<-predict(modelo_adq_sin_tarj_bic_ef, newdata = datos, interval = "prediction",
                                        level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

#Con regulación
pred_adq_sin_tarj_bic_ef_con_reg<-predict(modelo_adq_sin_tarj_bic_ef, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
# Visualización
stargazer(modelo_adq_sin_tarj_bic_ef, type = "html", 
          title = "Regresión sobre la tasa de adquirencia según BIC con efectos fijos de tiempo", 
          column.labels = c("MCO"), model.names = F, 
          dep.var.labels = c("Tasa Adquirencia"), 
          dep.var.caption = "Variable dependiente")
Regresión sobre la tasa de adquirencia según BIC con efectos fijos de tiempo
Variable dependiente
Tasa Adquirencia
MCO
Regulacion_intercambio -0.420***
(0.138)
Año_2011 -0.120
(0.696)
Año_2012 -0.140
(0.696)
Año_2013 -0.171
(0.556)
Año_2014 -0.565
(0.537)
Año_2015 -0.399
(0.532)
Año_2016 -0.103
(0.526)
Año_2017 -0.220
(0.519)
Año_2018 -0.164
(0.525)
Año_2019 -0.234
(0.522)
Año_2020 -0.401
(0.517)
Año_2021 -0.570
(0.540)
Año_2022 2.077***
(0.696)
ICH -2.828***
(0.807)
Europa -0.441***
(0.159)
Am_lat 0.357**
(0.155)
Constant 4.060***
(0.710)
Observations 97
R2 0.752
Adjusted R2 0.703
Residual Std. Error 0.492 (df = 80)
F Statistic 15.179*** (df = 16; 80)
Note: p<0.1; p<0.05; p<0.01

3.10 Regresión con variables instrumentales

datos_adq<-datos %>% dplyr::select(-Intercambio) %>% na.omit()
#Se estima el MC2E con la función ivreg
modelo_iv_adq<-ivreg(formula = Adquirencia ~ Valor_prom + Regulacion_intercambio 
                     + Crimen + Densidad_Pob + Densidad_Neg +  PIB_pc_PPA 
                     + Europa + Asia_Este + Am_lat | Regulacion_intercambio + Crimen 
                     + Densidad_Pob + Densidad_Neg + PIB_pc_PPA + Europa + Asia_Este 
                     + Am_lat + ICH, data = datos)

# Prueba de Hausman:
# Al realizar la prueba de Hausman vemos que el valor en p-value es menor a 0.05,lo cual aceptamos la hipótesis alternativa, esto quiere decir que existe endogenidad.
summary(modelo_iv_adq, diagnostics = TRUE)
## 
## Call:
## ivreg(formula = Adquirencia ~ Valor_prom + Regulacion_intercambio + 
##     Crimen + Densidad_Pob + Densidad_Neg + PIB_pc_PPA + Europa + 
##     Asia_Este + Am_lat | Regulacion_intercambio + Crimen + Densidad_Pob + 
##     Densidad_Neg + PIB_pc_PPA + Europa + Asia_Este + Am_lat + 
##     ICH, data = datos)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.3117 -0.3100  0.1063  0.2809  2.4008 
## 
## Coefficients:
##                          Estimate Std. Error t value Pr(>|t|)   
## (Intercept)             1.564e+00  7.007e-01   2.232  0.02849 * 
## Valor_prom              7.207e-03  4.278e-03   1.684  0.09608 . 
## Regulacion_intercambio -5.450e-01  1.684e-01  -3.237  0.00177 **
## Crimen                  1.143e-03  9.790e-03   0.117  0.90733   
## Densidad_Pob           -5.890e-04  4.592e-04  -1.283  0.20340   
## Densidad_Neg            3.298e-02  1.995e-02   1.653  0.10244   
## PIB_pc_PPA             -3.193e-06  7.601e-06  -0.420  0.67562   
## Europa                 -5.891e-01  4.005e-01  -1.471  0.14530   
## Asia_Este              -4.635e-01  3.996e-01  -1.160  0.24965   
## Am_lat                  5.322e-01  4.012e-01   1.326  0.18859   
## 
## Diagnostic tests:
##                  df1 df2 statistic  p-value    
## Weak instruments   1  78    24.705 3.87e-06 ***
## Wu-Hausman         1  77     5.328   0.0237 *  
## Sargan             0  NA        NA       NA    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.6089 on 78 degrees of freedom
## Multiple R-Squared: 0.6072,  Adjusted R-squared: 0.5618 
## Wald test: 15.18 on 9 and 78 DF,  p-value: 6.066e-14
#Errores estándar robustos
coeftest(modelo_iv_adq, vcov.=vcovHAC(modelo_iv_adq))
## 
## t test of coefficients:
## 
##                           Estimate  Std. Error t value Pr(>|t|)  
## (Intercept)             1.5638e+00  8.7570e-01  1.7858  0.07801 .
## Valor_prom              7.2071e-03  6.8553e-03  1.0513  0.29635  
## Regulacion_intercambio -5.4504e-01  2.1832e-01 -2.4965  0.01465 *
## Crimen                  1.1434e-03  1.3245e-02  0.0863  0.93143  
## Densidad_Pob           -5.8902e-04  7.7997e-04 -0.7552  0.45242  
## Densidad_Neg            3.2977e-02  1.9139e-02  1.7230  0.08885 .
## PIB_pc_PPA             -3.1928e-06  4.9796e-06 -0.6412  0.52329  
## Europa                 -5.8914e-01  5.5395e-01 -1.0635  0.29082  
## Asia_Este              -4.6348e-01  7.8640e-01 -0.5894  0.55731  
## Am_lat                  5.3219e-01  6.3310e-01  0.8406  0.40313  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#Se estima el MC2E con la función ivreg
modelo_iv_adq_ef<-ivreg(formula = Adquirencia ~ Valor_prom + Regulacion_intercambio 
                        + Crimen + Densidad_Pob + Densidad_Neg +  PIB_pc_PPA 
                        + Europa + Asia_Este + Am_lat + Año_2012 + Año_2013 
                        + Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 
                        + Año_2019 + Año_2020 + Año_2021 | Regulacion_intercambio 
                        + Crimen + Densidad_Pob + Densidad_Neg + PIB_pc_PPA 
                        + Europa + Asia_Este + Am_lat + ICH + Año_2012 
                        + Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 
                        + Año_2018 + Año_2019 + Año_2020 + Año_2021, data = datos)
# Prueba de Hausman:
# Al realizar la prueba de Hausman vemos que el valor en p-value es mayor a 0.05, esto quiere decir que no existe endogenidad.
summary(modelo_iv_adq_ef, diagnostics = TRUE)
## 
## Call:
## ivreg(formula = Adquirencia ~ Valor_prom + Regulacion_intercambio + 
##     Crimen + Densidad_Pob + Densidad_Neg + PIB_pc_PPA + Europa + 
##     Asia_Este + Am_lat + Año_2012 + Año_2013 + Año_2014 + 
##     Año_2015 + Año_2016 + Año_2017 + Año_2018 + Año_2019 + 
##     Año_2020 + Año_2021 | Regulacion_intercambio + Crimen + 
##     Densidad_Pob + Densidad_Neg + PIB_pc_PPA + Europa + Asia_Este + 
##     Am_lat + ICH + Año_2012 + Año_2013 + Año_2014 + Año_2015 + 
##     Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + 
##     Año_2021, data = datos)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.2460 -0.2588  0.0146  0.2657  1.1687 
## 
## Coefficients:
##                          Estimate Std. Error t value Pr(>|t|)    
## (Intercept)             4.387e+00  7.333e-01   5.983 9.12e-08 ***
## Valor_prom              3.936e-03  3.436e-03   1.146  0.25599    
## Regulacion_intercambio -4.130e-01  1.543e-01  -2.677  0.00930 ** 
## Crimen                  1.655e-03  8.447e-03   0.196  0.84527    
## Densidad_Pob           -5.491e-04  3.879e-04  -1.416  0.16145    
## Densidad_Neg            2.694e-02  1.668e-02   1.615  0.11089    
## PIB_pc_PPA             -4.876e-06  6.354e-06  -0.767  0.44551    
## Europa                 -7.542e-01  3.495e-01  -2.158  0.03445 *  
## Asia_Este              -4.654e-01  3.419e-01  -1.361  0.17792    
## Am_lat                  3.746e-01  3.420e-01   1.095  0.27724    
## Año_2012               -2.221e+00  7.407e-01  -2.999  0.00378 ** 
## Año_2013               -1.916e+00  6.093e-01  -3.144  0.00247 ** 
## Año_2014               -2.587e+00  5.919e-01  -4.371 4.34e-05 ***
## Año_2015               -2.401e+00  5.784e-01  -4.151 9.43e-05 ***
## Año_2016               -2.374e+00  5.487e-01  -4.326 5.09e-05 ***
## Año_2017               -2.489e+00  5.508e-01  -4.519 2.55e-05 ***
## Año_2018               -2.467e+00  5.562e-01  -4.435 3.45e-05 ***
## Año_2019               -2.451e+00  5.483e-01  -4.469 3.05e-05 ***
## Año_2020               -2.665e+00  5.446e-01  -4.894 6.38e-06 ***
## Año_2021               -2.844e+00  5.633e-01  -5.049 3.55e-06 ***
## 
## Diagnostic tests:
##                  df1 df2 statistic  p-value    
## Weak instruments   1  68    26.707 2.25e-06 ***
## Wu-Hausman         1  67     2.125     0.15    
## Sargan             0  NA        NA       NA    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.5089 on 68 degrees of freedom
## Multiple R-Squared: 0.7608,  Adjusted R-squared: 0.694 
## Wald test: 11.71 on 19 and 68 DF,  p-value: 1.051e-14
#Errores estándar robustos
coeftest(modelo_iv_adq_ef, vcov.=vcovHAC(modelo_iv_adq_ef))
## 
## t test of coefficients:
## 
##                           Estimate  Std. Error  t value  Pr(>|t|)    
## (Intercept)             4.3872e+00  6.4398e-01   6.8126 3.080e-09 ***
## Valor_prom              3.9358e-03  4.4995e-03   0.8747    0.3848    
## Regulacion_intercambio -4.1305e-01  2.1698e-01  -1.9036    0.0612 .  
## Crimen                  1.6548e-03  1.1398e-02   0.1452    0.8850    
## Densidad_Pob           -5.4910e-04  6.4362e-04  -0.8531    0.3966    
## Densidad_Neg            2.6941e-02  1.8160e-02   1.4835    0.1425    
## PIB_pc_PPA             -4.8758e-06  3.5633e-06  -1.3683    0.1757    
## Europa                 -7.5416e-01  5.1986e-01  -1.4507    0.1515    
## Asia_Este              -4.6543e-01  6.3874e-01  -0.7287    0.4687    
## Am_lat                  3.7459e-01  5.4883e-01   0.6825    0.4972    
## Año_2012               -2.2212e+00  2.4208e-01  -9.1753 1.631e-13 ***
## Año_2013               -1.9156e+00  2.8702e-01  -6.6741 5.453e-09 ***
## Año_2014               -2.5869e+00  2.9238e-01  -8.8479 6.354e-13 ***
## Año_2015               -2.4010e+00  2.8936e-01  -8.2975 6.317e-12 ***
## Año_2016               -2.3738e+00  3.2963e-01  -7.2014 6.144e-10 ***
## Año_2017               -2.4888e+00  3.1744e-01  -7.8400 4.278e-11 ***
## Año_2018               -2.4667e+00  3.5235e-01  -7.0009 1.413e-09 ***
## Año_2019               -2.4507e+00  2.1428e-01 -11.4369 < 2.2e-16 ***
## Año_2020               -2.6650e+00  2.6844e-01  -9.9276 7.344e-15 ***
## Año_2021               -2.8440e+00  2.5727e-01 -11.0544 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#Pronósticos para Costa Rica
#Sin regulación
pred_iv_adq_sin_reg<-predict(modelo_iv_adq, newdata = datos,
                                   interval = "prediction", level = 0.95,
                                   type = "response")[which(datos$Codigo_Pais=="CRI")]

pred_iv_adq_ef_sin_reg<-predict(modelo_iv_adq_ef, newdata = datos,
                                   interval = "prediction", level = 0.95,
                                   type = "response")[which(datos$Codigo_Pais=="CRI")]

#Con regulación
# data_CR: se le asigna a CR la regulación.
pred_iv_adq_con_reg <- predict(modelo_iv_adq, newdata = data_CR,
                                   interval = "prediction", level = 0.95,
                                   type = "response")[which(data_CR$Codigo_Pais=="CRI")]

pred_iv_adq_ef_con_reg <- predict(modelo_iv_adq_ef, newdata = data_CR,
                                   interval = "prediction", level = 0.95,
                                   type = "response")[which(data_CR$Codigo_Pais=="CRI")]

# *Ajustar predicción por distribución de comisiones:

# sin efectos de tiempo
pred_iv_adq_con_reg_ajus<-round((predict(modelo_iv_adq, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(data_CR$Codigo_Pais=="CRI")]-(1*0.09) - (1.25*0.05) - (1.5*0.02) - (1.75*0.05))/(0.71 + 0.08),2)

# con efectos de tiempo
pred_iv_adq_ef_con_reg_ef<-round((predict(modelo_iv_adq_ef, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(data_CR$Codigo_Pais=="CRI")]-(1*0.09) - (1.25*0.05) - (1.5*0.02) - (1.75*0.05))/(0.71 + 0.08),2)

3.11 Pruebas estadísticas a regresiones tasa de adquirencia

3.11.1 Modelo sin controles.

#modelo_adq_sin_cont

#Prueba de normalidad
#Se guardan los residuos
residuos_modelo_adq_sin_cont<-resid(modelo_adq_sin_cont)
#Se computa la prueba con la hipotesis Nula: distribución normal residuos
jarque.test(residuos_modelo_adq_sin_cont)
## 
##  Jarque-Bera Normality Test
## 
## data:  residuos_modelo_adq_sin_cont
## JB = 33.946, p-value = 4.252e-08
## alternative hypothesis: greater
#Se obtiene el resultado del índice de condición de multicolinealidad
#create vector of VIF values no tiene sentido sin controles
#vif(modelo_adq_sin_cont)

#Se ejecuta el test de White sobre el modelo original Nula: homocedasticidad
white_lm(modelo_adq_sin_cont, interactions = TRUE)
statistic p.value parameter method alternative
0.3917206 0.8221271 2 White’s Test greater
#Prueba de especificación lineal RESET Nula: especificación correcta lineal
#resettest(modelo_adq_sin_cont, power = 2:3, type = c("fitted"), data = datos)#No se realiza porque solo incluye una dummy

3.11.2 Modelo AICc sin efectos fijos de tiempo

#modelo_adq_con_cont_aicc

#Prueba de normalidad
#Se guardan los residuos
residuos_modelo_adq_con_cont_aicc<-resid(modelo_adq_con_cont_aicc)
#Se computa la prueba con la función Nula: distribución normal residuos
jarque.test(residuos_modelo_adq_con_cont_aicc)
## 
##  Jarque-Bera Normality Test
## 
## data:  residuos_modelo_adq_con_cont_aicc
## JB = 48.052, p-value = 3.679e-11
## alternative hypothesis: greater
#Se obtiene el resultado del índice de condición de multicolinealidad
#create vector of VIF values
vif(modelo_adq_con_cont_aicc)
## Regulacion_intercambio                 Crimen                 Cuenta 
##               1.428269               2.576051               2.405635 
##                    ICH             Valor_prom                 Europa 
##               3.573153               1.456750               1.716361
#Se ejecuta el test de White sobre el modelo original Nula: homocedasticidad
white_lm(modelo_adq_con_cont_aicc, interactions = TRUE)
statistic p.value parameter method alternative
35.65129 0.1231232 27 White’s Test greater
#Prueba de especificación lineal RESET Nula: especificación correcta lineal
resettest(modelo_adq_con_cont_aicc, power = 2:3, type = c("fitted"), data = datos, vcov = vcovHC)#Corregido por heterocedasticidad)
## 
##  RESET test
## 
## data:  modelo_adq_con_cont_aicc
## RESET = 0.70403, df1 = 2, df2 = 80, p-value = 0.4977

3.11.3 Modelo AICc con efectos fijos de tiempo

#modelo_adq_con_cont_aicc_ef

#Prueba de normalidad
#Se guardan los residuos
residuos_modelo_adq_con_cont_aicc_ef<-resid(modelo_adq_con_cont_aicc_ef)
#Se computa la prueba con la función Nula: distribución normal residuos
jarque.test(residuos_modelo_adq_con_cont_aicc_ef)
## 
##  Jarque-Bera Normality Test
## 
## data:  residuos_modelo_adq_con_cont_aicc_ef
## JB = 4.2929, p-value = 0.1169
## alternative hypothesis: greater
#Se obtiene el resultado del índice de condición de multicolinealidad no aplica para las dummies extra
#create vector of VIF values
#vif(modelo_adq_con_cont_aicc_ef)

#Se ejecuta el test de White sobre el modelo original Nula: homocedasticidad
white_lm(modelo_adq_con_cont_aicc_ef, interactions = TRUE)
statistic p.value parameter method alternative
63.83598 1 189 White’s Test greater
#Prueba de especificación lineal RESET Nula: especificación correcta lineal
#resettest(modelo_adq_con_cont_aicc_ef, power = 2:3, type = c("fitted"), data = datos, vcov = vcovHC)#No se realiza porque solo incluye extra los efectos fijos

3.11.4 Modelo BIC sin efectos fijos de tiempo

#modelo_adq_con_cont_bic

#Prueba de normalidad
#Se guardan los residuos
residuos_modelo_adq_con_cont_bic<-resid(modelo_adq_con_cont_bic)
#Se computa la prueba con la función Nula: distribución normal residuos
jarque.test(residuos_modelo_adq_con_cont_bic)
## 
##  Jarque-Bera Normality Test
## 
## data:  residuos_modelo_adq_con_cont_bic
## JB = 95.934, p-value < 2.2e-16
## alternative hypothesis: greater
#Se obtiene el resultado del índice de condición de multicolinealidad
#create vector of VIF values
vif(modelo_adq_con_cont_bic)
## Regulacion_intercambio                 Cuenta             Valor_prom 
##               1.303303               1.510676               1.092650 
##                 Europa 
##               1.501998
#Se ejecuta el test de White sobre el modelo original Nula: homocedasticidad
white_lm(modelo_adq_con_cont_bic, interactions = TRUE)
statistic p.value parameter method alternative
12.24581 0.5865694 14 White’s Test greater
#Prueba de especificación lineal RESET Nula: especificación correcta lineal
resettest(modelo_adq_con_cont_bic, power = 2:3, type = c("fitted"), data = datos, vcov = vcovHC)#No se realiza porque solo incluye extra los efectos fijos
## 
##  RESET test
## 
## data:  modelo_adq_con_cont_bic
## RESET = 0.50768, df1 = 2, df2 = 82, p-value = 0.6038

3.11.5 Modelo BIC con efectos fijos de tiempo

#modelo_adq_con_cont_bic_ef

#Prueba de normalidad
#Se guardan los residuos
residuos_modelo_adq_con_cont_bic_ef<-resid(modelo_adq_con_cont_bic_ef)
#Se computa la prueba con la función Nula: distribución normal residuos
jarque.test(residuos_modelo_adq_con_cont_bic_ef)
## 
##  Jarque-Bera Normality Test
## 
## data:  residuos_modelo_adq_con_cont_bic_ef
## JB = 6.0371, p-value = 0.04887
## alternative hypothesis: greater
#Se obtiene el resultado del índice de condición de multicolinealidad no aplica para las dummies extra
#create vector of VIF values
#vif(modelo_adq_con_cont_bic_ef)

#Se ejecuta el test de White sobre el modelo original Nula: homocedasticidad
white_lm(modelo_adq_con_cont_bic_ef, interactions = TRUE)
statistic p.value parameter method alternative
51.51486 1 170 White’s Test greater
#Prueba de especificación lineal RESET Nula: especificación correcta lineal
#resettest(modelo_adq_con_cont_bic_ef, power = 2:3, type = c("fitted"), data = datos, vcov = vcovHC)#No se realiza porque solo incluye extra los efectos fijos

3.11.6 Modelo con variables instrumentales sin efectos fijos de tiempo

#modelo_iv_adq

#Prueba de normalidad
#Se guardan los residuos
residuos_modelo_iv_adq<-resid(modelo_iv_adq)
#Se computa la prueba con la función Nula: distribución normal residuos
jarque.test(residuos_modelo_iv_adq)
## 
##  Jarque-Bera Normality Test
## 
## data:  residuos_modelo_iv_adq
## JB = 39.284, p-value = 2.948e-09
## alternative hypothesis: greater
#Se obtiene el resultado del índice de condición de multicolinealidad
#create vector of VIF values
#vif(modelo_iv_adq)

#Se ejecuta el test de White sobre el modelo original Nula: homocedasticidad no aplica para IVreg. Se utilizaron estimadores robustos anteriormes
#white_lm(modelo_iv_adq, interactions = TRUE)

#Prueba de especificación lineal RESET Nula: especificación correcta lineal
resettest(modelo_iv_adq, power = 2:3, type = c("fitted"), data = datos, vcov = vcovHC)#Corregido por heterocedasticidad)
## 
##  RESET test
## 
## data:  modelo_iv_adq
## RESET = 1.65, df1 = 2, df2 = 78, p-value = 0.1988

3.11.7 Modelo con variables instrumentales con efectos fijos de tiempo

#modelo_iv_adq_ef

#Prueba de normalidad
#Se guardan los residuos
residuos_modelo_iv_adq_ef<-resid(modelo_iv_adq_ef)
#Se computa la prueba con la función Nula: distribución normal residuos
jarque.test(residuos_modelo_iv_adq_ef)
## 
##  Jarque-Bera Normality Test
## 
## data:  residuos_modelo_iv_adq_ef
## JB = 1.7341, p-value = 0.4202
## alternative hypothesis: greater
#Se obtiene el resultado del índice de condición de multicolinealidad no aplica a las dummies extra
#create vector of VIF values
#vif(modelo_iv_adq_ef)

#Se ejecuta el test de White sobre el modelo original Nula: homocedasticidad no aplica a IVreg. Se utilizaron estimadores robustos anteriormente
#white_lm(modelo_iv_adq_ef, interactions = TRUE)

#Prueba de especificación lineal RESET Nula: especificación correcta lineal
#resettest(modelo_iv_adq_ef, power = 2:3, type = c("fitted"), data = datos, vcov = vcovHC)#No se realiza porque solo incluye extra los efectos fijos

4 Resumen de las estimaciones tasa de intercambio

Los siguientes cuadros resumen las estimaciones para la tasa de intercambio:

# promedio de la estimación de modelos
pred_todos_int_sin_reg<-mean(c(as.numeric(pred_int_sin_cont_sin_reg),
                               as.numeric(pred_int_con_cont_sin_reg), 
                               as.numeric(pred_int_con_cont_ef_sin_reg), 
                               as.numeric(pred1_int_sin_reg), 
                               as.numeric(pred2_int_sin_reg), 
                               as.numeric(pred3_int_sin_reg), 
                               as.numeric(pred4_int_sin_reg),  
                               as.numeric(pred_int_trunc_0_aicc_sin_reg),
                               as.numeric(pred_int_trunc_0_bic_sin_reg),
                               as.numeric(pred_int_trunc_0_aicc_ef_sin_reg),
                               as.numeric(pred_int_trunc_0_bic_ef_sin_reg), 
                               as.numeric(pred_int_trunc_0.27_aicc_sin_reg),
                               as.numeric(pred_int_trunc_0.27_bic_sin_reg),
                               as.numeric(pred_int_trunc_0.27_aicc_ef_sin_reg),
                               as.numeric(pred_int_trunc_0.27_bic_ef_sin_reg), 
                               as.numeric(pred_iv_int_sin_reg), 
                               as.numeric(pred_iv_int_ef_sin_reg), 
                               as.numeric(pred1_log_int_sin_reg), 
                               as.numeric(pred2_log_int_sin_reg), 
                               as.numeric(pred3_log_int_sin_reg), 
                               as.numeric(pred4_log_int_sin_reg)))
# promedio de los modelos
pred_todos_int_con_reg<-mean(c(as.numeric(pred_int_sin_cont_con_reg),
                               as.numeric(pred_int_con_cont_con_reg), 
                               as.numeric(pred_int_con_cont_ef_con_reg), 
                               as.numeric(pred1_int_con_reg), 
                               as.numeric(pred2_int_con_reg), 
                               as.numeric(pred3_int_con_reg), 
                               as.numeric(pred4_int_con_reg),  
                               as.numeric(pred_int_trunc_0_aicc_con_reg), 
                               as.numeric(pred_int_trunc_0_bic_con_reg), 
                               as.numeric(pred_int_trunc_0_aicc_ef_con_reg), 
                               as.numeric(pred_int_trunc_0_bic_ef_con_reg),  
                               as.numeric(pred_int_trunc_0.27_aicc_con_reg), 
                               as.numeric(pred_int_trunc_0.27_bic_con_reg), 
                               as.numeric(pred_int_trunc_0.27_aicc_ef_con_reg), 
                               as.numeric(pred_int_trunc_0.27_bic_ef_con_reg),  
                               as.numeric(pred_iv_int_con_reg), 
                               as.numeric(pred_iv_int_ef_con_reg), 
                               as.numeric(pred1_log_int_con_reg), 
                               as.numeric(pred2_log_int_con_reg), 
                               as.numeric(pred3_log_int_con_reg), 
                               as.numeric(pred4_log_int_con_reg), 
                               as.numeric(pred1_int_reg), 
                               as.numeric(pred2_int_reg), 
                               as.numeric(pred3_int_reg), 
                               as.numeric(pred4_int_reg)))
# promedio de los truncados sin regulación
pred_int_trunc_0_todos_sin_reg<-mean(c(pred_int_trunc_0_aicc_sin_reg, 
                                       pred_int_trunc_0_bic_sin_reg,
                                       pred_int_trunc_0_aicc_ef_sin_reg,
                                       pred_int_trunc_0_bic_ef_sin_reg))
# promedio de los truncados con regulación
pred_int_trunc_0_todos_con_reg<-mean(c(pred_int_trunc_0_aicc_con_reg, 
                                       pred_int_trunc_0_bic_con_reg,
                                       pred_int_trunc_0_aicc_ef_con_reg,
                                       pred_int_trunc_0_bic_ef_con_reg))
# promedio de los truncados 0.27 sin regulación
pred_int_trunc_0.27_todos_sin_reg<-mean(c(pred_int_trunc_0.27_aicc_sin_reg,
                                          pred_int_trunc_0.27_bic_sin_reg, 
                                          pred_int_trunc_0.27_aicc_ef_sin_reg,
                                          pred_int_trunc_0.27_bic_ef_sin_reg))
# promedio de los truncados 0.27 con regulación
pred_int_trunc_0.27_todos_con_reg<-mean(c(pred_int_trunc_0.27_aicc_con_reg,
                                          pred_int_trunc_0.27_bic_con_reg, 
                                          pred_int_trunc_0.27_aicc_ef_con_reg,
                                          pred_int_trunc_0.27_bic_ef_con_reg))
# promedio no lineal sin regulación
pred_int_nolineal_sin_reg_prom<-mean(c(pred_int_nolineal_sin_reg_aicc,
                                       pred_int_nolineal_sin_reg_con_cont_bic,
                                       pred_int_nolineal_sin_reg_con_cont_aicc_ef,
                                       pred_int_nolineal_sin_reg_con_cont_bic_ef))
# promedio no lineal con regulación
pred_int_nolineal_con_reg_prom<-mean(c(pred_int_nolineal_con_reg_aicc,
                                       pred_int_nolineal_con_reg_con_cont_bic,
                                       pred_int_nolineal_con_reg_con_cont_aicc_ef,
                                       pred_int_nolineal_con_reg_con_cont_bic_ef))
# promedio sin uso tarjetas sin regulación
pred_int_sin_tarj_sin_reg_prom<-mean( c(pred_int_sin_tarj_aicc_sin_reg,
                                        pred_int_sin_tarj_bic_sin_reg,
                                        pred_int_sin_tarj_aicc_ef_sin_reg, 
                                        pred_int_sin_tarj_bic_ef_sin_reg))

# promedio sin uso tarjetas con regulación
pred_int_sin_tarj_con_reg_prom<-mean( c(pred_int_sin_tarj_aicc_con_reg,
                                        pred_int_sin_tarj_bic_con_reg,
                                        pred_int_sin_tarj_aicc_ef_con_reg, 
                                        pred_int_sin_tarj_bic_ef_con_reg))

# promedio regresión robusta sin regulación
pred_mod_rob_int_sin_reg_con_cont_prom<-mean(c(pred_mod_rob_int_sin_reg_con_cont_aicc,
                                               pred_mod_rob_int_sin_reg_con_cont_bic,
                                               pred_mod_rob_int_sin_reg_con_cont_aicc_ef,
                                               pred_mod_rob_int_sin_reg_con_cont_bic_ef))

# promedio regresión robusta con regulación
pred_mod_rob_int_con_reg_con_cont_prom<-mean(c(pred_int_con_cont_con_reg_robusto_aicc,
                                               pred_int_con_cont_con_reg_robusto_bic,
                                               pred_int_con_cont_con_reg_robusto_aicc_ef,
                                               pred_int_con_cont_con_reg_robusto_bic_ef))


# Todos los pronósticos
pronosticos_resultados_int<-as.data.frame(cbind(
  round(
  c( pred_int_sin_cont_sin_reg, 
     pred1_int_sin_reg, 
     pred2_int_sin_reg, 
     pred3_int_sin_reg, 
     pred4_int_sin_reg, 
     pred_int_sin_reg, 
     pred1_log_int_sin_reg, 
     pred2_log_int_sin_reg, 
     pred3_log_int_sin_reg, 
     pred4_log_int_sin_reg, 
     pred_log_int_sin_reg,
     pred_int_nolineal_sin_reg_aicc,
     pred_int_nolineal_sin_reg_con_cont_bic,
     pred_int_nolineal_sin_reg_con_cont_aicc_ef,
     pred_int_nolineal_sin_reg_con_cont_bic_ef,
     pred_int_nolineal_sin_reg_prom,
     pred_mod_rob_int_sin_reg_con_cont_aicc,
     pred_mod_rob_int_sin_reg_con_cont_bic,
     pred_mod_rob_int_sin_reg_con_cont_aicc_ef,
     pred_mod_rob_int_sin_reg_con_cont_bic_ef,
     pred_mod_rob_int_sin_reg_con_cont_prom,

     NA,
     NA,
     NA,
     NA,
     NA,
     #pred_int_sin_cont_sin_EEE_sin_reg, 
     #pred_int_con_cont_sin_EEE_sin_reg, 
     #pred_int_con_cont_sin_EEE_ef_sin_reg, 
     pred1_int_sin_EEE_sin_reg, 
     pred2_int_sin_EEE_sin_reg, 
     pred3_int_sin_EEE_sin_reg, 
     pred4_int_sin_EEE_sin_reg, 
     pred_int_sin_EEE_sin_reg,
     pred_int_trunc_0_aicc_sin_reg, 
     pred_int_trunc_0_bic_sin_reg, 
     pred_int_trunc_0_aicc_ef_sin_reg, 
     pred_int_trunc_0_bic_ef_sin_reg, 
     pred_int_trunc_0_todos_sin_reg, 
     pred_int_trunc_0.27_aicc_sin_reg, 
     pred_int_trunc_0.27_bic_sin_reg, 
     pred_int_trunc_0.27_aicc_ef_sin_reg,
     pred_int_trunc_0.27_bic_ef_sin_reg,
     pred_int_trunc_0.27_todos_sin_reg,
     pred_int_sin_tarj_aicc_sin_reg,
     pred_int_sin_tarj_bic_sin_reg,
     pred_int_sin_tarj_aicc_ef_sin_reg,
     pred_int_sin_tarj_bic_ef_sin_reg,
     pred_int_sin_tarj_sin_reg_prom,
     pred_iv_int_sin_reg, 
     pred_iv_int_ef_sin_reg, 
     pred_todos_int_sin_reg),3), 
  round(
  c( pred_int_sin_cont_con_reg, 
     pred1_int_con_reg, 
     pred2_int_con_reg, 
     pred3_int_con_reg, 
     pred4_int_con_reg, 
     pred_int_con_reg,
     pred1_log_int_con_reg, 
     pred2_log_int_con_reg, 
     pred3_log_int_con_reg, 
     pred4_log_int_con_reg, 
     pred_log_int_con_reg, 
     pred_int_nolineal_con_reg_aicc,
     pred_int_nolineal_con_reg_con_cont_bic,
     pred_int_nolineal_con_reg_con_cont_aicc_ef,
     pred_int_nolineal_con_reg_con_cont_bic_ef,
     pred_int_nolineal_con_reg_prom,
     pred_int_con_cont_con_reg_robusto_aicc,
     pred_int_con_cont_con_reg_robusto_bic,
     pred_int_con_cont_con_reg_robusto_aicc_ef,
     pred_int_con_cont_con_reg_robusto_bic_ef,
     pred_mod_rob_int_con_reg_con_cont_prom,
     pred1_int_reg, 
     pred2_int_reg, 
     pred3_int_reg, 
     pred4_int_reg, 
     pred_int_reg,
     #pred_int_con_cont_sin_EEE_con_reg, 
     #pred_int_con_cont_sin_EEE_con_reg, 
     #pred_int_con_cont_sin_EEE_ef_con_reg, 
     pred1_int_sin_EEE_con_reg, 
     pred2_int_sin_EEE_con_reg, 
     pred3_int_sin_EEE_con_reg, 
     pred4_int_sin_EEE_con_reg, 
     pred_int_sin_EEE_con_reg,
     pred_int_trunc_0_aicc_con_reg, 
     pred_int_trunc_0_bic_con_reg, 
     pred_int_trunc_0_aicc_ef_con_reg, 
     pred_int_trunc_0_bic_ef_con_reg, 
     pred_int_trunc_0_todos_con_reg, 
     pred_int_trunc_0.27_aicc_con_reg, 
     pred_int_trunc_0.27_bic_con_reg, 
     pred_int_trunc_0.27_aicc_ef_con_reg,
     pred_int_trunc_0.27_bic_ef_con_reg,
     pred_int_trunc_0.27_todos_con_reg, 
     pred_int_sin_tarj_aicc_con_reg,
     pred_int_sin_tarj_bic_con_reg,
     pred_int_sin_tarj_aicc_ef_con_reg,
     pred_int_sin_tarj_bic_ef_con_reg,
     pred_int_sin_tarj_con_reg_prom,
     pred_iv_int_con_reg, 
     pred_iv_int_ef_con_reg, 
     pred_todos_int_con_reg),3) 
  ))

rownames(pronosticos_resultados_int)<-
  c("Estimación principal - Modelo sin controles", 
    "Estimación principal - Modelo AICc sin efectos fijos de tiempo", 
    "Estimación principal - Modelo BIC sin efectos fijos de tiempo", 
    "Estimación principal - Modelo AICc con efectos fijos de tiempo", 
    "Estimación principal - Modelo BIC con efectos fijos de tiempo", 
    "Estimación principal - Promedio modelos AICc y BIC", 
    "Modelo con transformación logarítmica - Modelo AICc sin efectos fijos de tiempo", 
    "Modelo con transformación logarítmica - Modelo BIC sin efectos fijos de tiempo", 
    "Modelo con transformación logarítmica - Modelo AICc con efectos fijos de tiempo", 
    "Modelo con transformación logarítmica - Modelo BIC con efectos fijos de tiempo", 
    "Modelo con transformación logarítmica - Promedio modelos AICc y BIC",
    "Modelo con efectos no lineales con controles AICc",
    "Modelo con efectos no lineales con controles BIC",
    "Modelo con efectos no lineales con efectos fijos de tiempo AICc",
    "Modelo con efectos no lineales con efectos fijos de tiempo BIC",
    "Promedio Modelos no lineales",
    "Modelo regresión robusta con controles AICc",
    "Modelo regresión robusta con controles BIC",
    "Modelo regresión robusta con efectos fijos de tiempo AICc",
    "Modelo regresión robusta con efectos fijos de tiempo BIC",
    "Promedio Modelos regresión robusta",
    "Restringuido a países con regulación - Modelo AICc sin efectos fijos de tiempo", 
    "Restringuido a países con regulación - Modelo BIC sin efectos fijos de tiempo", 
    "Restringuido a países con regulación - Modelo AICc con efectos fijos de tiempo", 
    "Restringuido a países con regulación - Modelo BIC con efectos fijos de tiempo", 
    "Restringuido a países con regulación - Promedio modelos AICc y BIC",
    #"Modelo sin controles sin EEE", 
    #"Modelo con controles sin efectos fijos de tiempo sin EEE", 
    #"Modelo con controles con efectos fijos de tiempo sin EEE", 
    "Sin el EEE - Modelo AICc sin efectos fijos de tiempo", 
    "Sin el EEE - Modelo BIC sin efectos fijos de tiempo", 
    "Sin el EEE - Modelo AICc con efectos fijos de tiempo", 
    "Sin el EEE - Modelo BIC con efectos fijos de tiempo", 
    "Sin el EEE - Promedio modelos AICc y BIC",
    "Modelo truncado en 0 - AICc sin efectos fijos de tiempo",
    "Modelo truncado en 0 - BIC sin efectos fijos de tiempo",
    "Modelo truncado en 0 - AICc con efectos fijos de tiempo", 
    "Modelo truncado en 0 - BIC con efectos fijos de tiempo", 
    "Modelo truncado en 0 - Promedio modelos AICc y BIC", 
    "Modelo truncado en 0.27 - AICc sin efectos fijos de tiempo", 
    "Modelo truncado en 0.27 - BIC sin efectos fijos de tiempo", 
    "Modelo truncado en 0.27 - AICc con efectos fijos de tiempo", 
    "Modelo truncado en 0.27 - BIC con efectos fijos de tiempo", 
    "Modelo truncado en 0.27 - Promedio modelos AICc y BIC",
    "Modelo sin uso de tarjetas AICc sin efectos fijos",
    "Modelo sin uso de tarjetas BIC sin efectos fijos",
    "Modelo sin uso de tarjetas AICc con efectos fijos de tiempo",
    "Modelo sin uso de tarjetas BIC con efectos fijos de tiempo",
    "Promedio modelos sin uso de tarjetas",
    "Modelo con variables instrumentales sin efectos fijos de tiempo", 
    "Modelo con variables instrumentales con efectos fijos de tiempo", 
    "Promedio todos los modelos anteriores")

names(pronosticos_resultados_int)<-c("Escenario sin regulación","Escenario con regulación")
# mostrar los pronósticos
DT::datatable(pronosticos_resultados_int, caption = "Resumen de las estimaciones de tasa de intercambio")

5 Resumen de las estimaciones tasa de adquirencia

Los siguientes cuadros resumen las estimaciones para la tasa adquirencia:

5.1 Pronósticos sin factor de ajuste

Dado que la mayoría de los países no regulan adquirencia, la información en la base de datos puede corresponder a comisiones promedio. De ser ese el caso, se necesitaría ajustar la estimación por la estructura de comisiones de adquirencia en Costa Rica. Esto se realiza en la subsección denominada “Pronósticos sin factor de ajuste”. A continuación se muestran todos los pronósticos de adquirencia sin ajuste.

# promedio sin regulación
pred_todos_adq_sin_reg<-mean(
  c(as.numeric(pred_adq_sin_cont_sin_reg),
    as.numeric(pred_adq_con_cont_sin_reg),
    as.numeric(pred_adq_con_cont_ef_sin_reg),
    as.numeric(pred1_adq_sin_reg), 
    as.numeric(pred2_adq_sin_reg), 
    as.numeric(pred3_adq_sin_reg), 
    as.numeric(pred4_adq_sin_reg),  
    as.numeric(pred_adq_trunc_0_aicc_sin_reg), 
    as.numeric(pred_adq_trunc_0_bic_sin_reg), 
    as.numeric(pred_adq_trunc_0_aicc_ef_sin_reg), 
    as.numeric(pred_adq_trunc_0_bic_ef_sin_reg),  
    as.numeric(pred_adq_trunc_0.36_aicc_sin_reg), 
    as.numeric(pred_adq_trunc_0.36_bic_sin_reg), 
    as.numeric(pred_adq_trunc_0.36_aicc_ef_sin_reg), 
    as.numeric(pred_adq_trunc_0.36_bic_ef_sin_reg),  
    as.numeric(pred_iv_adq_sin_reg), 
    as.numeric(pred_iv_adq_ef_sin_reg), 
    as.numeric(pred1_log_adq_sin_reg), 
    as.numeric(pred2_log_adq_sin_reg), 
    as.numeric(pred3_log_adq_sin_reg), 
    as.numeric(pred4_log_adq_sin_reg)))
#promedio con regulación
pred_todos_adq_con_reg<-mean(
  c(as.numeric(pred_adq_sin_cont_con_reg), 
    as.numeric(pred_adq_con_cont_con_reg), 
    as.numeric(pred_adq_con_cont_ef_con_reg), 
    as.numeric(pred1_adq_con_reg), 
    as.numeric(pred2_adq_con_reg), 
    as.numeric(pred3_adq_con_reg), 
    as.numeric(pred4_adq_con_reg),  
    as.numeric(pred_adq_trunc_0_aicc_con_reg), 
    as.numeric(pred_adq_trunc_0_bic_con_reg), 
    as.numeric(pred_adq_trunc_0_aicc_ef_con_reg), 
    as.numeric(pred_adq_trunc_0_bic_ef_con_reg),  
    as.numeric(pred_adq_trunc_0.36_aicc_con_reg), 
    as.numeric(pred_adq_trunc_0.36_bic_con_reg), 
    as.numeric(pred_adq_trunc_0.36_aicc_ef_con_reg), 
    as.numeric(pred_adq_trunc_0.36_bic_ef_con_reg),  
    as.numeric(pred_iv_adq_con_reg), 
    as.numeric(pred_iv_adq_ef_con_reg), 
    as.numeric(pred1_log_adq_con_reg), 
    as.numeric(pred2_log_adq_con_reg), 
    as.numeric(pred3_log_adq_con_reg), 
    as.numeric(pred4_log_adq_con_reg), 
    as.numeric(pred1_adq_reg), 
    as.numeric(pred2_adq_reg), 
    as.numeric(pred3_adq_reg), 
    as.numeric(pred4_adq_reg)))
# promedio no lineal sin regulación
pred_adq_nolineal_sin_reg_prom<-mean(c( pred_adq_nolineal_sin_reg_aicc,
                                       pred_adq_nolineal_sin_reg_bic,
                                       pred_adq_nolineal_sin_reg_ef_aicc,
                                       pred_adq_nolineal_sin_reg_ef_bic
))

# promedio no lineal con regulación
pred_adq_nolineal_con_reg_prom<-mean(c( pred_adq_nolineal_con_reg_aicc,
                                       pred_adq_nolineal_con_reg_bic,
                                       pred_adq_nolineal_con_reg_ef_aicc,
                                       pred_adq_nolineal_con_reg_ef_bic
))

# promedio sin uso tarjetas sin regulación
pred_adq_sin_tarj_sin_reg_prom<-mean( c(pred_adq_sin_tarj_aicc_sin_reg,
                                        pred_adq_sin_tarj_bic_sin_reg,
                                        pred_adq_sin_tarj_aicc_ef_sin_reg,
                                        pred_adq_sin_tarj_bic_ef_sin_reg))

# promedio sin uso tarjetas con regulación
pred_adq_sin_tarj_con_reg_prom<-mean( c(pred_adq_sin_tarj_aicc_con_reg,
                                        pred_adq_sin_tarj_bic_con_reg,
                                        pred_adq_sin_tarj_aicc_ef_con_reg,
                                        pred_adq_sin_tarj_bic_ef_con_reg))

# promedio regresión robusta sin regulación
pred_mod_rob_adq_sin_reg_con_cont_prom<-mean(c(pred_adq_con_cont_sin_reg_robusto_aicc,
                                               pred_adq_con_cont_sin_reg_robusto_bic,
                                               pred_adq_con_cont_sin_reg_robusto_aicc_ef,
                                               pred_adq_con_cont_sin_reg_robusto_bic_ef))
# promedio regresión robusta con regulación
pred_mod_rob_adq_con_reg_con_cont_prom<-mean(c(pred_adq_con_cont_con_reg_robusto_aicc,
                                               pred_adq_con_cont_con_reg_robusto_bic,
                                               pred_adq_con_cont_con_reg_robusto_aicc_ef,
                                               pred_adq_con_cont_con_reg_robusto_bic_ef))

#  Todos los pronósticos  
pronosticos_resultados_adq<-as.data.frame(cbind(
  c(
  round(c( pred_adq_sin_cont_sin_reg, 
           pred1_adq_sin_reg, 
           pred2_adq_sin_reg, 
           pred3_adq_sin_reg, 
           pred4_adq_sin_reg, 
           pred_adq_sin_reg,
           pred1_log_adq_sin_reg, 
           pred2_log_adq_sin_reg, 
           pred3_log_adq_sin_reg, 
           pred4_log_adq_sin_reg, 
           pred_log_adq_sin_reg,
           pred_adq_nolineal_sin_reg_aicc,
                   pred_adq_nolineal_sin_reg_bic,
                   pred_adq_nolineal_sin_reg_ef_aicc,
                   pred_adq_nolineal_sin_reg_ef_bic,
                   pred_adq_nolineal_sin_reg_prom,
                   pred_adq_con_cont_sin_reg_robusto_aicc,
           pred_adq_con_cont_sin_reg_robusto_bic,
           pred_adq_con_cont_sin_reg_robusto_aicc_ef,
           pred_adq_con_cont_sin_reg_robusto_bic_ef,
           pred_mod_rob_adq_sin_reg_con_cont_prom
                   ),2),
           NA,
           NA,
           NA,
           NA,
           NA,
     round(
       c(pred_adq_trunc_0_aicc_sin_reg, 
           pred_adq_trunc_0_bic_sin_reg, 
           pred_adq_trunc_0_aicc_ef_sin_reg, 
           pred_adq_trunc_0_bic_ef_sin_reg, 
           pred_adq_trunc_0_todos_sin_reg, 
           pred_adq_trunc_0.36_aicc_sin_reg, 
           pred_adq_trunc_0.36_bic_sin_reg, 
           pred_adq_trunc_0.36_aicc_ef_sin_reg, 
           pred_adq_trunc_0.36_bic_ef_sin_reg, 
           pred_adq_trunc_0.36_todos_sin_reg, 
           pred_adq_sin_tarj_aicc_sin_reg,
           pred_adq_sin_tarj_bic_sin_reg,
           pred_adq_sin_tarj_aicc_ef_sin_reg,
           pred_adq_sin_tarj_bic_ef_sin_reg,
           pred_adq_sin_tarj_sin_reg_prom,
           pred_iv_adq_sin_reg, 
           pred_iv_adq_ef_sin_reg, 
           pred_todos_adq_sin_reg),2)
     ), 
    round(
      c(pred_adq_sin_cont_con_reg, 
        pred1_adq_con_reg, 
        pred2_adq_con_reg, 
        pred3_adq_con_reg, 
        pred4_adq_con_reg,
        pred_adq_con_reg, 
        pred1_log_adq_con_reg, 
        pred2_log_adq_con_reg, 
        pred3_log_adq_con_reg, 
        pred4_log_adq_con_reg, 
        pred_log_adq_con_reg, 
        pred_adq_nolineal_con_reg_aicc,
                pred_adq_nolineal_con_reg_bic,
                pred_adq_nolineal_con_reg_ef_aicc,
                pred_adq_nolineal_con_reg_ef_bic,
                pred_adq_nolineal_con_reg_prom,
        pred_adq_con_cont_con_reg_robusto_aicc,
        pred_adq_con_cont_con_reg_robusto_bic,
        pred_adq_con_cont_con_reg_robusto_aicc_ef,
        pred_adq_con_cont_con_reg_robusto_bic_ef,
        pred_mod_rob_adq_con_reg_con_cont_prom,
                pred1_adq_reg, 
        pred2_adq_reg, 
        pred3_adq_reg, 
        pred4_adq_reg, 
        pred_adq_reg, 
        pred_adq_trunc_0_aicc_con_reg, 
        pred_adq_trunc_0_bic_con_reg, 
        pred_adq_trunc_0_aicc_ef_con_reg, 
        pred_adq_trunc_0_bic_ef_con_reg, 
        pred_adq_trunc_0_todos_con_reg, 
        pred_adq_trunc_0.36_aicc_con_reg, 
        pred_adq_trunc_0.36_bic_con_reg, 
        pred_adq_trunc_0.36_aicc_ef_con_reg, 
        pred_adq_trunc_0.36_bic_ef_con_reg, 
        pred_adq_trunc_0.36_todos_con_reg, 
                pred_adq_sin_tarj_aicc_con_reg,
        pred_adq_sin_tarj_bic_con_reg,
        pred_adq_sin_tarj_aicc_ef_con_reg,
        pred_adq_sin_tarj_bic_ef_con_reg,           
                pred_adq_sin_tarj_con_reg_prom,
        pred_iv_adq_con_reg, 
        pred_iv_adq_ef_con_reg, 
        pred_todos_adq_con_reg),2)
  ))
#nombrar los modelos 
rownames(pronosticos_resultados_adq)<-
  c("Estimación principal - Modelo sin controles", 
    "Estimación principal - Modelo AICc sin efectos fijos de tiempo", 
    "Estimación principal - Modelo BIC sin efectos fijos de tiempo", 
    "Estimación principal - Modelo AICc con efectos fijos de tiempo", 
    "Estimación principal - Modelo BIC con efectos fijos de tiempo", 
    "Estimación principal - Promedio modelos AICc y BIC", 
    "Modelo con transformación logarítmica - Modelo AICc sin efectos fijos de tiempo", 
    "Modelo con transformación logarítmica - Modelo BIC sin efectos fijos de tiempo", 
    "Modelo con transformación logarítmica - Modelo AICc con efectos fijos de tiempo", 
    "Modelo con transformación logarítmica - Modelo BIC con efectos fijos de tiempo", 
    "Modelo con transformación logarítmica - Promedio modelos AICc y BIC", 
    "Modelo con efectos no lineales con controles AICc",
    "Modelo con efectos no lineales con controles BIC",
    "Modelo con efectos no lineales con efectos fijos de tiempo AICc",
    "Modelo con efectos no lineales con efectos fijos de tiempo BIC",
    "Promedio modelos con efectos no lineales",
    "Modelo regresión robusta con controles AICc",
    "Modelo regresión robusta con controles BIC",
    "Modelo regresión robusta con efectos fijos de tiempo AICc",
    "Modelo regresión robusta con efectos fijos de tiempo BIC",
    "Promedio Modelos regresión robusta",
    "Restringuido a países con regulación - Modelo AICc sin efectos fijos de tiempo", 
    "Restringuido a países con regulación - Modelo BIC sin efectos fijos de tiempo", 
    "Restringuido a países con regulación - Modelo AICc con efectos fijos de tiempo", 
    "Restringuido a países con regulación - Modelo BIC con efectos fijos de tiempo", 
    "Restringuido a países con regulación - Promedio modelos AICc y BIC", 
    "Modelo truncado en 0 - AICc sin efectos fijos de tiempo", 
    "Modelo truncado en 0 - BIC sin efectos fijos de tiempo", 
    "Modelo truncado en 0 - AICc con efectos fijos de tiempo", 
    "Modelo truncado en 0 - BIC con efectos fijos de tiempo", 
    "Modelo truncado en 0 - Promedio modelos AICc y BIC", 
    "Modelo truncado en 0.36 - AICc sin efectos fijos de tiempo", 
    "Modelo truncado en 0.36 - BIC sin efectos fijos de tiempo", 
    "Modelo truncado en 0.36 - AICc con efectos fijos de tiempo", 
    "Modelo truncado en 0.36 - BIC con efectos fijos de tiempo", 
    "Modelo truncado en 0.36 - Promedio modelos AICc y BIC",
    "Modelo sin uso de tarjetas AICc sin efectos fijos",
    "Modelo sin uso de tarjetas BIC sin efectos fijos",
    "Modelo sin uso de tarjetas AICc con efectos fijos de tiempo",
    "Modelo sin uso de tarjetas BIC con efectos fijos de tiempo",
    "Promedio modelos sin uso de tarjetas",
    "Modelo con variables instrumentales sin efectos fijos de tiempo", 
    "Modelo con variables instrumentales con efectos fijos de tiempo", 
    "Promedio todos los modelos anteriores")

names(pronosticos_resultados_adq)<-c("Escenario sin regulación y sin ajuste","Escenario con regulación y sin ajuste")

# mostrar los pronósticos
DT::datatable(pronosticos_resultados_adq, caption = "Resumen de las estimaciones de tasa de adquirencia sin ajuste")

5.2 Pronósticos con factor de ajuste

Dado que la mayoría de los países no regulan adquirencia, la información en la base de datos puede corresponder a comisiones promedio. De ser ese el caso, se necesitaría ajustar la estimación por la estructura de comisiones de adquirencia en Costa Rica. En particular, durante el 2021:

  • Las actividades con una adquirencia de entre 0% a 1% representaban el 9% de los ingresos de los adquirentes.

  • Las actividades con una adquirencia de entre 1,01% a 1,25% representaban el 5% de los ingresos de los adquirentes.

  • Las actividades con una adquirencia de entre 1,26% a 1,50% representaban el 2% de los ingresos de los adquirentes.

  • Las actividades con una adquirencia de entre 1,51% a 1,75% representaban el 5% de los ingresos de los adquirentes.

  • Las actividades con una adquirencia de entre 1,76% a 2% representaban el 8% de los ingresos de los adquirentes.

  • Las actividades con una adquirencia mayor a 2% representaban el 71% de los ingresos de los adquirentes.

pronosticos_resultados_adq_corr<-as.data.frame(cbind(
  c(
  round(
    c(as.numeric((pred_adq_sin_cont_sin_reg-0.43)/(0.71)),
     as.numeric((pred1_adq_sin_reg-0.43)/(0.71)), 
     as.numeric((pred2_adq_sin_reg-0.43)/(0.71)), 
     as.numeric((pred3_adq_sin_reg-0.43)/(0.71)), 
     as.numeric((pred4_adq_sin_reg-0.43)/(0.71)),
     as.numeric((pred_adq_sin_reg-0.43)/(0.71)),
     as.numeric((pred1_log_adq_sin_reg-0.43)/(0.71)),
     as.numeric((pred2_log_adq_sin_reg-0.43)/(0.71)),
     as.numeric((pred3_log_adq_sin_reg-0.43)/(0.71)),
     as.numeric((pred4_log_adq_sin_reg-0.43)/(0.71)),
     as.numeric((pred_log_adq_sin_reg-0.43)/(0.71)),
     as.numeric((pred_adq_nolineal_sin_reg_aicc-0.43)/(0.71)),
         as.numeric((pred_adq_nolineal_sin_reg_bic-0.43)/(0.71)),
         as.numeric((pred_adq_nolineal_sin_reg_ef_aicc-0.43)/(0.71)),
         as.numeric((pred_adq_nolineal_sin_reg_ef_bic-0.43)/(0.71)),
         as.numeric((pred_adq_nolineal_sin_reg_prom -0.43)/(0.71)),
     as.numeric((pred_adq_con_cont_sin_reg_robusto_aicc-0.27)/(0.79)),
     as.numeric((pred_adq_con_cont_sin_reg_robusto_bic-0.27)/(0.79)),
     as.numeric((pred_adq_con_cont_sin_reg_robusto_aicc_ef-0.27)/(0.79)),
     as.numeric((pred_adq_con_cont_sin_reg_robusto_bic_ef-0.27)/(0.79)),
     as.numeric((pred_mod_rob_adq_sin_reg_con_cont_prom-0.27)/(0.79))
         ),2),
     NA, NA, NA, NA, NA,
     round(c(
     as.numeric((pred_adq_trunc_0_aicc_sin_reg-0.43)/(0.71)),
     as.numeric((pred_adq_trunc_0_bic_sin_reg-0.43)/(0.71)),
     as.numeric((pred_adq_trunc_0_aicc_ef_sin_reg-0.43)/(0.71)),
     as.numeric((pred_adq_trunc_0_bic_ef_sin_reg-0.43)/(0.71)),
     as.numeric((pred_adq_trunc_0_todos_sin_reg-0.43)/(0.71)),
     as.numeric((pred_adq_trunc_0.36_aicc_sin_reg-0.43)/(0.71)),
     as.numeric((pred_adq_trunc_0.36_bic_sin_reg-0.43)/(0.71)),
     as.numeric((pred_adq_trunc_0.36_aicc_ef_sin_reg-0.43)/(0.71)),
     as.numeric((pred_adq_trunc_0.36_bic_ef_sin_reg-0.43)/(0.71)),
     as.numeric((pred_adq_trunc_0.36_todos_sin_reg-0.43)/(0.71)),
     as.numeric((pred_adq_sin_tarj_aicc_sin_reg-0.27)/(0.79)),
     as.numeric((pred_adq_sin_tarj_bic_sin_reg-0.27)/(0.79)),
     as.numeric((pred_adq_sin_tarj_aicc_ef_sin_reg-0.27)/(0.79)),
     as.numeric((pred_adq_sin_tarj_bic_ef_sin_reg-0.27)/(0.79)),
     as.numeric((pred_adq_sin_tarj_sin_reg_prom-0.27)/(0.79)),
     as.numeric((pred_iv_adq_sin_reg-0.43)/(0.71)),
     as.numeric((pred_iv_adq_ef_sin_reg-0.43)/(0.71)),
     as.numeric((pred_todos_adq_sin_reg-0.43)/(0.71))),
    2)
  ),
  round(
    c(as.numeric((pred_adq_sin_cont_con_reg-0.27)/(0.79)),
     as.numeric((pred1_adq_con_reg-0.27)/(0.79)),
     as.numeric((pred2_adq_con_reg-0.27)/(0.79)),
     as.numeric((pred3_adq_con_reg-0.27)/(0.79)), 
     as.numeric((pred4_adq_con_reg-0.27)/(0.79)),
     as.numeric((pred_adq_con_reg-0.27)/(0.79)),                   
     as.numeric((pred1_log_adq_con_reg-0.27)/(0.79)),
     as.numeric((pred2_log_adq_con_reg-0.27)/(0.79)),
     as.numeric((pred3_log_adq_con_reg-0.27)/(0.79)),
     as.numeric((pred4_log_adq_con_reg-0.27)/(0.79)), 
     as.numeric((pred_log_adq_con_reg-0.27)/(0.79)),
     as.numeric((pred_adq_nolineal_con_reg_aicc-0.43)/(0.71)),
         as.numeric((pred_adq_nolineal_con_reg_bic-0.43)/(0.71)),
         as.numeric((pred_adq_nolineal_con_reg_ef_aicc-0.43)/(0.71)),
         as.numeric((pred_adq_nolineal_con_reg_ef_bic-0.43)/(0.71)),
         as.numeric((pred_adq_nolineal_con_reg_prom-0.43)/(0.71)),
         as.numeric((pred_adq_con_cont_con_reg_robusto_aicc-0.27)/(0.79)),
     as.numeric((pred_adq_con_cont_con_reg_robusto_bic-0.27)/(0.79)),
     as.numeric((pred_adq_con_cont_con_reg_robusto_aicc_ef-0.27)/(0.79)),
     as.numeric((pred_adq_con_cont_con_reg_robusto_bic_ef-0.27)/(0.79)),
     as.numeric((pred_mod_rob_adq_con_reg_con_cont_prom-0.27)/(0.79)),
     as.numeric((pred1_adq_reg-0.27)/(0.79)), 
     as.numeric((pred2_adq_reg-0.27)/(0.79)), 
     as.numeric((pred3_adq_reg-0.27)/(0.79)), 
     as.numeric((pred4_adq_reg-0.27)/(0.79)), 
     as.numeric((pred_adq_reg-0.27)/(0.79)),  
     as.numeric((pred_adq_trunc_0_aicc_con_reg-0.27)/(0.79)),
     as.numeric((pred_adq_trunc_0_bic_con_reg-0.27)/(0.79)),
     as.numeric((pred_adq_trunc_0_aicc_ef_con_reg-0.27)/(0.79)),
     as.numeric((pred_adq_trunc_0_bic_ef_con_reg-0.27)/(0.79)),
     as.numeric((pred_adq_trunc_0_todos_con_reg-0.27)/(0.79)),
     as.numeric((pred_adq_trunc_0.36_aicc_con_reg-0.27)/(0.79)),
     as.numeric((pred_adq_trunc_0.36_bic_con_reg-0.27)/(0.79)), 
     as.numeric((pred_adq_trunc_0.36_aicc_ef_con_reg-0.27)/(0.79)),
     as.numeric((pred_adq_trunc_0.36_bic_ef_con_reg-0.27)/(0.79)),
     as.numeric((pred_adq_trunc_0.36_todos_con_reg-0.27)/(0.79)),
         as.numeric((pred_adq_sin_tarj_aicc_con_reg-0.27)/(0.79)),
     as.numeric((pred_adq_sin_tarj_bic_con_reg-0.27)/(0.79)),
     as.numeric((pred_adq_sin_tarj_aicc_ef_con_reg-0.27)/(0.79)),
     as.numeric((pred_adq_sin_tarj_bic_ef_con_reg-0.27)/(0.79)),
         as.numeric((pred_adq_sin_tarj_con_reg_prom-0.27)/(0.79)),
     as.numeric((pred_iv_adq_con_reg-0.27)/(0.79)),
     as.numeric((pred_iv_adq_ef_con_reg-0.27)/(0.79)), 
     as.numeric((pred_todos_adq_con_reg-0.27)/(0.79)))
    ,2)
  ))

rownames(pronosticos_resultados_adq_corr)<-
  c("Estimación principal - Modelo sin controles", 
    #"Modelo con controles sin efectos fijos de tiempo", 
    #"Modelo con controles con efectos fijos de tiempo", 
    "Estimación principal - Modelo AICc sin efectos fijos de tiempo", 
    "Estimación principal - Modelo BIC sin efectos fijos de tiempo", 
    "Estimación principal - Modelo AICc con efectos fijos de tiempo", 
    "Estimación principal - Modelo BIC con efectos fijos de tiempo", 
    "Estimación principal - Promedio modelos AICc y BIC", 
    "Modelo con transformación logarítmica - Modelo AICc sin efectos fijos de tiempo", 
    "Modelo con transformación logarítmica - Modelo BIC sin efectos fijos de tiempo", 
    "Modelo con transformación logarítmica - Modelo AICc con efectos fijos de tiempo", 
    "Modelo con transformación logarítmica - Modelo BIC con efectos fijos de tiempo", 
    "Modelo con transformación logarítmica - Promedio modelos AICc y BIC", 
    "Modelo con efectos no lineales con controles AICc",
    "Modelo con efectos no lineales con controles BIC",
    "Modelo con efectos no lineales con efectos fijos de tiempo AICc",
    "Modelo con efectos no lineales con efectos fijos de tiempo BIC",
    "Promedio modelos con efectos no lineales",
    "Modelo regresión robusta con controles AICc",
    "Modelo regresión robusta con controles BIC",
    "Modelo regresión robusta con efectos fijos de tiempo AICc",
    "Modelo regresión robusta con efectos fijos de tiempo BIC",
    "Promedio Modelos regresión robusta",
    "Restringuido a países con regulación - Modelo AICc sin efectos fijos de tiempo", 
    "Restringuido a países con regulación - Modelo BIC sin efectos fijos de tiempo", 
    "Restringuido a países con regulación - Modelo AICc con efectos fijos de tiempo", 
    "Restringuido a países con regulación - Modelo BIC con efectos fijos de tiempo", 
    "Restringuido a países con regulación - Promedio modelos AICc y BIC", 
    "Modelo truncado en 0 - AICc sin efectos fijos de tiempo", 
    "Modelo truncado en 0 - BIC sin efectos fijos de tiempo", 
    "Modelo truncado en 0 - AICc con efectos fijos de tiempo", 
    "Modelo truncado en 0 - BIC con efectos fijos de tiempo", 
    "Modelo truncado en 0 - Promedio modelos AICc y BIC", 
    "Modelo truncado en 0.36 - AICc sin efectos fijos de tiempo", 
    "Modelo truncado en 0.36 - BIC sin efectos fijos de tiempo", 
    "Modelo truncado en 0.36 - AICc con efectos fijos de tiempo", 
    "Modelo truncado en 0.36 - BIC con efectos fijos de tiempo", 
    "Modelo truncado en 0.36 - Promedio modelos AICc y BIC",
    "Modelo sin uso de tarjetas AICc sin efectos fijos",
    "Modelo sin uso de tarjetas BIC sin efectos fijos",
    "Modelo sin uso de tarjetas AICc con efectos fijos de tiempo",
    "Modelo sin uso de tarjetas BIC con efectos fijos de tiempo",
    "Promedio modelos sin uso de tarjetas",
    "Modelo con variables instrumentales sin efectos fijos de tiempo", 
    "Modelo con variables instrumentales con efectos fijos de tiempo", 
    "Promedio todos los modelos anteriores")

names(pronosticos_resultados_adq_corr)<-c("Escenario sin regulación y con ajuste","Escenario con regulación y con ajuste")

DT::datatable(pronosticos_resultados_adq_corr, caption = "Resumen de las estimaciones de tasa de adquirencia con ajuste")